[英]PHP strtotime EST back and forth conversion
对于EST时间,我设置:
date_default_timezone_set("America/New_York");
当页面加载时,我通过以下方式获得EST时间:
$time = time();
问题是当我在时间戳和日期时间格式之间来回转换字符串时:
10/31/2012 7:30pm 1351729800 | 10/31/2012, 8:30 pm
11/2/2012 7:30pm 1351902600 | 11/02/2012, 8:30 pm
11/3/2012 8:00pm 1351990800 | 11/03/2012, 9:00 pm
11/7/2012 8:00pm 1352336400 | 11/07/2012, 8:00 pm
11/9/2012 8:00pm 1352509200 | 11/09/2012, 8:00 pm
11/10/2012 8:00pm 1352595600 | 11/10/2012, 8:00 pm
我期待这些日期和时间是一样的。
第一部分(在“|”之前)只是字符串,例如“10/31/2012 7:30 pm”和strtotime(“10/31/2012 7:30 pm EST”)。
部分(在“|”之后)是前一个strtotime()值的date()。
我该怎么做才能从字符串转换为时间(strtotime)并仔细检查返回的日期格式是否与字符串输入相同?
谢谢
我要说这是因为目前纽约正处于夏令时 - EDT而不是EST。 这会影响到这样的事情:
date_default_timezone_set("America/New_York");
strtotime("10/31/2012 7:30pm"); // translates to "Wed, 31 Oct 2012 19:30:00 -0400"
strtotime("10/31/2012 7:30pm EDT"); // translates to "Wed, 31 Oct 2012 19:30:00 -0400"
strtotime("10/31/2012 7:30pm EST"); // translates to "Wed, 31 Oct 2012 20:30:00 -0400"
快速修复可能是不将时区添加到字符串中, strtotime()
将使用您设置的正确默认时区。
通过使用DateTime
createFromFormat
函数,您可以更准确地了解如何解析DateTime
:
$date = DateTime::createFromFormat('m/d/Y g:ia', "10/31/2012 7:30pm");
echo $date->format('U');
或者,如果你等到11月,问题将自行解决:-)
有时您需要在PHP脚本中设置并忘记时间,并且转移到新服务器可能会改变您的辛勤工作。 如果您正在使用字符串来表示日期,例如将您的时区代码添加到您的字符串中,例如New Yourk夏令时:'EDT'
echo date('g:i a',strtotime('10:59 EDT'));// 10:59 am
或者如果你想提取一个特定时间的秒数,让我们说晚上10:59,使用类似的东西:
echo gmdate('g:i a',strtotime('January 1 1970 10:59pm GMT'));//82740 seconds //converted to 10:59pm
后者将给你(12 + 10小时(* 60)和59分钟)* 60秒,并且gmdate函数将从你传递给函数的几秒钟回显GMT时间..如果你尝试日期而不是你将最有可能的是,除非你住在格林威治标准时间(格林威治标准时间),否则不会得到10:59。
这个时区的东西可能会变得非常混乱,所以当有一个非常具体的计划时要非常小心并搞乱它。就像将某些人的时间转换为你的等等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.