要么我失去了理智,要么我对自己正在做的事情一无所知。我倾向于后者。
我正在尝试转换这个:1316826000,我非常有信心应该是星期六,2011年9月24日01:00:00 GMT
http://www.onlineconversion.com/unix_time.htm证实了这一点。
http://www.unixtimestamp.com/index.php告诉我09/23/11美国东部时间晚上8:00:00,到目前为止一切顺利。我碰巧在EST,这是我想从PHP回来的结果。
当我约会时('l,M d,Y,h:ia',$ iTime),我得到:2011年9月23日星期五,凌晨12:00,整整20个小时。
我已使用日期('c')确认服务器的时间是正确的。日期('c')输出为:2012-05-19T03:19:20 + 00:00。服务器位于中央时区,当前时间是晚上10点20分。 5月18日。
echo date_default_timezone_get()输出“GMT”(使用date_default_timezone_set('GMT')设置脚本中的其他位置)
我错过了什么?到目前为止,我所读到的任何内容都无法解释我如何得到一个落后20小时的结果。如果它快一点一小时,我至少可以把它包裹起来作为某种DST的习惯,但是20? Crazyness!谢谢你的阅读!
答案 0 :(得分:1)
检查你的php.ini对date.timezone的说法。
在unix中,它通常在这里:/etc/php.ini
然后使用PHP识别的适当时区:
http://www.php.net/manual/en/timezones.php
date.timezone = 'America/New_York'
然后重新加载您的网络服务器。
Unix时间只是指自纪元以来的秒数。与时区无关。对于你离开GMT的每个区域,时区只需从unix时间加1或小时减去1小时(3600秒)。 一个例子:
$userTimezone = new DateTimeZone('America/New_York');
$gmtTimezone = new DateTimeZone('GMT');
$myDateTime = new DateTime('2014-01-22 11:44', $gmtTimezone);
$offset = $userTimezone->getOffset($myDateTime);
echo $offset;
输出:-14400或4小时。纽约和GMT之间的差异是什么
答案 1 :(得分:0)
将一些Java代码与Joda-Time 2.3库一起使用,因为我不知道PHP ...
long m = 1316826000L;
DateTime dateTimeUtc = new DateTime( m * 1000L, DateTimeZone.UTC );
DateTime dateTimeNewYork = dateTimeUtc.toDateTime( DateTimeZone.forID( "America/New_York" ) );
System.out.println( "dateTimeUtc: " + dateTimeUtc );
System.out.println( "dateTimeNewYork: " + dateTimeNewYork );
我可以告诉你,从1970年开始的UTC / GMT(Unix Epoch)开始的1316826000秒......
dateTimeUtc: 2011-09-24T01:00:00.000Z
dateTimeNewYork: 2011-09-23T21:00:00.000-04:00
因此,正如评论者所说,美国东部时间晚上8点,但EST当天没有生效。 DST(Daylight Saving Time)(白痴,正如你所正确指出的那样)是当年(2011年)的in effect until November 9。因此,时间推进一小时,到晚上9点。
在格林威治标准时间/ UTC中,这意味着第二天上午凌晨1点。
美国东海岸的标准时间比UTC / GMT晚5小时。使用夏令时,它比UTC / GMT落后4小时(靠近一小时)。
你感到困惑的地方: