获取用户提交的小时 - 时间===>更改并显示它

时间:2013-03-04 14:02:20

标签: php date time

这就是我想要实现的目标:

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'));

3 个答案:

答案 0 :(得分:1)

根据PHP手册

$date = new DateTime(null, new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";

因此,您将使用有效的日期字符串:

这项工作。返回12:10

$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行

直接使用TIMESTAMP,这项工作:返回17:10

$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);