我有一个以这种格式存储在数据库中的日期:
2011-02-23 13:00:00
我需要以ISO8601格式返回它,但需要将其设置为特定时区(不一定是服务器的时区)。我想要返回的是:
2011-02-23T13:00:00-0600
使用此代码:
echo date(DATE_ISO8601, strtotime("2011-02-23 13:00:00"));
我明白了:
2011-02-23T13:00:00+0000
有没有办法在日期或strtotime功能中重置时区,还是我需要去除最右边的5个字符并将所需的时区标记连接到剩余的日期/时间?
已编辑添加: 虽然我接受了下面使用新DateTime和设置新DateTimeZone的解决方案,但如果您不需要继续重置时区,我发现了一种更简单的方法:
date_default_timezone_set('America/Chicago');
$startTime = date(DATE_ISO8601, strtotime("2011-02-23 13:00:00"));
答案 0 :(得分:4)
您可以使用DateTime
课程。可以使用特定时区初始化日期时间对象,并轻松转换为其他时间。
从手册修改:
$date = new DateTime('2011-02-23 13:00:00', new DateTimeZone('Pacific/Nauru'));
echo $date->format('c') . "\n";
$date->setTimezone( new DateTimeZone('Europe/Berlin'));
echo $date->format('c') . "\n";