PHP 中的日期时间修改/格式问题

Datetime modify / format issue in PHP

我花了太多的日日夜夜阅读文档并尝试了几乎所有方法来让它工作。

我已经为网站的联系表单实现了这个日期时间选择器,这样用户就可以进行预订,然后服务器会向所有者发送一个 .ics 日历请求以供其记录: https://mugifly.github.io/jquery-simple-datetimepicker/

日期时间选择器通过 jquery.simple-dtpicker.js 配置为具有 格式:'DD-MM-YYYY hh:mm' 用于两种可用语言,en & es 用于英语和西班牙语。原因是网站是西班牙文。

到目前为止一切正常,我在测试联系表时收到了一个日期时间值。

我的问题是简单地尝试将获得的日期时间增加 1 小时,以满足 PHP.

中 .ics 事件所需的格式

它不是添加一个小时,而是默认为当前本地时间并添加 1 小时,或者默认为 01/01/1970(大纪元时间)并破坏时间。这与我在在线 php 测试人员中成功测试相同代码时得到的结果不同。

这是我的 php 代码:

<?php
 date_default_timezone_set("Europe/Berlin");
 $dateStart = $_POST['ical'];

 $date = date_format($dateStart, 'd-m-Y H:i');
 $dateZ = date('d-m-Y H:i', $date);
 $dateDone = date('d-m-Y H:i', strtotime($dateStart + 3600));
 $date1 = date('d-m-Y H:i', strtotime('+1 hours', $dateStart));
 $date2 = date('d-m-Y H:i', strtotime('+1 hours', $dateZ));
 $date3 = date('d-m-Y H:i', strtotime('+1 hours', $date));

我的结果:

$dateStart: 20-04-2021 05:00 
$dateDone:  09-04-3620 07:35 
$date1:     01-01-1970 02:00 
$date2:     01-01-1970 02:00 
$date3:     01-01-1970 02:00 

知道可能是什么问题吗?出于某种原因,我无法使用任何使用 -> 运算符的 datetime format/modify/add 函数,因此唯一可行的似乎是通过字符串或整数添加一个小时。

非常感谢

你犯了非常愚蠢的错误。

date_default_timezone_set("Europe/Berlin");
$dateStart = '20-04-2021 05:00';

$date = date_format(new DateTime($dateStart), 'd-m-Y H:i'); // date_format need date time .. string were suplied

$dateZ = date('d-m-Y H:i', strtotime($date));
$dateDone = date('d-m-Y H:i:s', strtotime($dateStart + 3600)); // didnt get what exactly you need.. in date function you can add time easily using str to time
$date1 = date('d-m-Y H:i', strtotime('+1 hours'. $dateStart));
$date2 = date('d-m-Y H:i', strtotime('+1 hours'. $dateZ));
$date3 = date('d-m-Y H:i', strtotime('+1 hours'. $date));

使用 类 DateTime、DateTimeZone 和 DateInterval

$dt = new \DateTime('now', new \DateTimeZone('Europe/Berlin'));
echo 'now: '.$dt->format('Y-m-d H:i:s') . PHP_EOL;
$dt->add(new \DateInterval('PT1H'));
echo 'then : '.$dt->format('Y-m-d H:i:s') . PHP_EOL;