And*_*Hin 52 php timezone date
我有一个日期字符串,说' 2008-09-11'.我想从中获取时间戳,但我需要动态指定时区(而不是PHP默认值).
所以回顾一下,我有两个字符串:
$dateStr = '2008-09-11';
$timezone = 'Americas/New_York';
Run Code Online (Sandbox Code Playgroud)
我如何获得此时间戳?
编辑:一天中的时间将是那天的午夜.... $ dateStr ='2008-09-11 00:00:00';
sal*_*the 73
$date = new DateTime($dateStr, new DateTimeZone($timezone));
Run Code Online (Sandbox Code Playgroud)
$timestamp = $date->format('U');
kro*_*owe 28
如果您运行PHP> 5.2(我认为这是他们添加DateTime类的版本),那么接受的答案是很好的.如果你想支持旧版本,你不想输入那么多,或者如果你只是喜欢功能方法,还有另一种方法也不能修改全局设置:
$dateStr = '2008-09-11 00:00:00';
$timezone = 'America/New_York';
$dtUtcDate = strtotime($dateStr. ' '. $timezone);
Run Code Online (Sandbox Code Playgroud)
Jon*_*nah 17
如果由于某种原因你使用<5.2(天堂禁止),这将有效.
$reset = date_default_timezone_get();
date_default_timezone_set('America/New_York');
$stamp = strtotime($dateStr);
date_default_timezone_set($reset);
Run Code Online (Sandbox Code Playgroud)
但是5.2及以上,我强烈建议你选择@ salathe的答案.
如果您打算使用时区,我建议您使用 DateTime 类,在这种情况下,DateTime::createFromFormat() 函数将允许您执行以下操作:
$start = "2015-01-14 11:59:43";
$timezone = "America/Montreal";
$tz = new DateTimeZone($timezone);
$dt = DateTime::createFromFormat('Y-m-d H:i:s', $start, $tz);
Run Code Online (Sandbox Code Playgroud)
当您将 $tz 放入 DateTime::createFromFormat 函数时,您会告诉它您提供的日期所在的时区,以便当您需要将其转换为另一个时区时,您所要做的就是这样:
$start = $dt->setTimeZone(new DateTimeZone('UTC'));
Run Code Online (Sandbox Code Playgroud)