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

PHP中的日期时间修改/格式问题,php,datetimepicker,datetime-format,Php,Datetimepicker,Datetime Format,我花了太多的时间日夜阅读文档,并尝试着做任何事情来让它工作 我已经为网站的联系人表单实现了这个日期时间选择器,因此用户可以进行预订,然后服务器将向所有者发送一个.ics日历请求以获取其记录: datetimepicker通过jquery.simple-dtpicker.js配置为两种可用语言的格式:“DD-MM-YYYY hh:MM”,英语和西班牙语的en&es。原因是这个网站是西班牙语的 到目前为止,一切都很顺利,我在测试联系人表单时收到了一个datetime值 我的问题只是试图在获得的da

我花了太多的时间日夜阅读文档,并尝试着做任何事情来让它工作

我已经为网站的联系人表单实现了这个日期时间选择器,因此用户可以进行预订,然后服务器将向所有者发送一个.ics日历请求以获取其记录:

datetimepicker通过jquery.simple-dtpicker.js配置为两种可用语言的格式:“DD-MM-YYYY hh:MM”,英语和西班牙语的en&es。原因是这个网站是西班牙语的

到目前为止,一切都很顺利,我在测试联系人表单时收到了一个datetime值

我的问题只是试图在获得的datetime上增加1小时,以满足PHP中.ics事件所需的格式

它不是添加一小时,而是默认为当前本地时间并添加1小时,或者默认为1970年1月1日(历元时间)并更改时间。这与我在在线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));
你知道会有什么问题吗?由于某种原因,我无法使用任何使用->运算符的datetime格式/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));

你犯了很愚蠢的错误

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;

使用类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;

这回答了你的问题吗?我不确定。。这是否意味着php无法解析欧洲格式的日期?如何正确地向$dateStart值添加1小时?请参阅。请注意,的第二个参数需要是时间戳,而不是字符串。第二个参数是时间戳。。。第一个参数是字符串。我不明白你的意思,问题是我没有在任何地方更改日期格式,它来自datetimepicker,已经是所需格式,并且是一种可接受的格式。。。日期显示正确,只是值不正确。例如,在
strotime(“+1小时”,$dateZ)
中,
$dateZ
是字符串,而不是时间戳。这是否回答了您的问题?我不确定。。这是否意味着php无法解析欧洲格式的日期?如何正确地向$dateStart值添加1小时?请参阅。请注意,的第二个参数需要是时间戳,而不是字符串。第二个参数是时间戳。。。第一个参数是字符串。我不明白你的意思,问题是我没有在任何地方更改日期格式,它来自datetimepicker,已经是所需格式,并且是一种可接受的格式。。。日期显示正确,只是值不正确。例如,在
strotime(“+1小时”,$dateZ)
中,
$dateZ
是字符串,而不是时间戳。非常感谢您!!现在我一直在尝试生成通过电子邮件发送的.ics附件,以便收件人可以将事件添加到他们的日历中。。。我可以生成文件的内容只是罚款,但没有线索如何正确地附加到电子邮件。我将为此创建一个新帖子。当做我建议您使用PHP mailer类实现同样的功能。在那里你可以很容易地附加文件。在其他地方,在邮件功能标题中附加文件是很棘手的。非常感谢!!现在我一直在尝试生成通过电子邮件发送的.ics附件,以便收件人可以将事件添加到他们的日历中。。。我可以生成文件的内容只是罚款,但没有线索如何正确地附加到电子邮件。我将为此创建一个新帖子。当做我建议您使用PHP mailer类实现同样的功能。在那里你可以很容易地附加文件。在其他地方,在邮件函数头中附加文件是很困难的