2

我以这种格式提供了日期/时间:2012-10-14T06:00

我可以像这样修改数据:早上 6:00 使用

<?php
function formatDate($date, $format){
    $output = date($format, strtotime($date));
    return $output;
}
?>

<?php echo formatDate('2012-10-14T06:00', 'g:ia'); ?>

输出:早上 6:00

太好了,但是我如何使用

date_default_timezone_set('America/Los_Angeles');

或者

date_default_timezone_set('欧洲/阿姆斯特丹);

哪个设置为用户时区(无论他们选择什么) - 时间应该在原始时区数据和用户提供的时间之间偏移('Europe/Amsterdam)

因此,如果他们将默认时区设置为不同的国家/地区,则时间将显示为上午 8:00 或上午 4:00,具体取决于该时区偏移量。

基本时区将始终采用 XXXX-XX-XXTXX:XX 格式。

任何帮助将不胜感激

4

1 回答 1

4

使用DateTime对象。手动提取偏移量不会考虑白天节省和其他怪癖。

// use the the appropriate timezone for your stamp
$timestamp = DateTime::createFromFormat('Y-m-d\TH:i', '2012-10-14T06:00', new DateTimeZone('UTC'));
// set it to whatever you want to convert it
$timestamp->setTimeZone(new DateTimeZone('Europe/Amsterdam'));
print $timestamp->format('Y-m-d H:i:s');
于 2012-10-17T06:10:22.823 回答