根据 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]:无法在 writecodeonline.com/php 中的位置 8 (0) 解析时间字符串 (1362417000):意外字符” :7 堆栈跟踪:#0 writecodeonline.com/php(7): DateTime-> _construct('1362417000', Object(DateTimeZone)) #1 {main} 在第 7 行抛出
要直接使用时间戳,这可行:返回 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