这就是我想要实现的目标:
1)用户从表单提交roster_input(这里我只是设置一个变量作为示例输入)
2)php将其更改为时间戳并减去7500秒
3)php显示新的时间,但是在不同的时区
显然我做的事情非常糟糕......但这是我第一次处理约会!$roster_input='14:15' ;
$timestamp = strtotime($roster_input) - 7500;
$date = new DateTime($timestamp, new DateTimeZone('Pacific/Nauru'));
echo $date;
也试了,没有成功:
$date = DateTime::createFromFormat('H:i', $timestamp, new DateTimeZone('Pacific/Nauru'));
答案 0 :(得分:1)
根据PHP手册
$date = new DateTime(null, new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";
因此,您将使用有效的日期字符串:
$roster_input='14:15' ;
$timestamp = strtotime($roster_input) - 7500;
$format = date("H:i", $timestamp );
$date = new DateTime($format, new DateTimeZone('Pacific/Nauru'));
echo $date->format('H:i') . "\n"; //Note how you echo the result
$roster_input='14:15' ;
$timestamp = strtotime($roster_input) - 7500;
$date = new DateTime($timestamp , new DateTimeZone('Pacific/Nauru'));
echo $date->format('H:i') . "\n";
致命错误:消息'DateTime :: _ construct()[datetime .-- construct]的未捕获异常'Exception':无法解析位置8(0)处的时间字符串(1362417000):意外字符'在writecodeonline.com/php:7堆栈跟踪:#0 writecodeonline.com/php(7):DateTime-> _construct('1362417000',Object(DateTimeZone))#1 {main}抛出第7行
$roster_input='14:15' ;
$timestamp = strtotime($roster_input) - 7500;
$date = new DateTime('@'.$timestamp , new DateTimeZone('Pacific/Nauru')); //Notice '@'.
echo $date->format('H:i') . "\n";
哪个适合您的目标结果。请注意不同的结果 阅读更多:http://www.php.net/manual/en/datetime.construct.php
答案 1 :(得分:0)
你似乎走在了正确的轨道上。唯一的问题是你不能只是将对象转储为字符串。
尝试将最后一行更改为:
echo $date->format("c");
答案 2 :(得分:0)
或者对原文进行3-char更改:
$roster_input='14:15';
$timestamp = strtotime($roster_input) - 7500;
$date = new DateTime("@$timestamp", new DateTimeZone('Pacific/Nauru'));
echo $date->format(DATE_RFC822);