我的$timeString
格式为8:00 PM ET
。我正在尝试使用以下内容创建日期对象:
$time = date_create_from_format('g:i A e', $timeString);
(来源:http://www.php.net/manual/en/datetime.createfromformat.php)
当我使用date("H:i:s", $time)
回显结果时,我得到7:00 PM ET
。无论我提供什么时间,我总是收到晚上7点(格林威治标准时间0点)。
我是否错误地使用了格式参数?
答案 0 :(得分:4)
这里有一些问题。一个是ET
不是有效的时区标识符。尝试使用EST
(或EDT
)。请参阅:http://www.php.net/manual/en/timezones.others.php
其次,date_create_from_format
(或DateTime::createFromFormat
)会返回DateTime
个对象,因此无法将其与date()
函数一起使用。
您的代码打印00:00:00
,因为date_create_from_format
失败,因此返回FALSE
。 date()
期望第二个参数是一个int,所以"转换" FALSE
到0
。因此,您获得了00:00:00
。
您需要使用DateTime
方法来处理DateTime
对象。像这样:
$timeString = '8:00 PM EST';
$time = date_create_from_format('g:i A e', $timeString);
echo date_format($time, 'H:i:s');
答案 1 :(得分:2)
date_create_from_format()
返回DateTime object
。而date()
期望第二个参数是时间戳(int)。所以你不应该使用date()
。请改用DateTime::format()
。