Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP strtotime EST来回转换_Php_Datetime_Date_Strtotime - Fatal编程技术网

PHP strtotime EST来回转换

PHP strtotime EST来回转换,php,datetime,date,strtotime,Php,Datetime,Date,Strtotime,在最短的时间内,我设置了: date_default_timezone_set("America/New_York"); 当页面加载时,我通过以下方式获得最短时间: $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 135

在最短的时间内,我设置了:

date_default_timezone_set("America/New_York");
当页面加载时,我通过以下方式获得最短时间:

$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:30pm”和strotime(“10/31/2012 7:30pm EST”)

节(在“|”)是上一个strotime()值的日期()

如何将字符串转换为时间(strotime)并再次检查返回的日期格式是否与字符串输入相同


谢谢

我想说这是因为目前纽约是夏令时——美国东部夏令时,而不是美国东部夏令时。这会影响这样的事情:

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"
快速修复方法可能是不将时区添加到字符串中,
strotime()
将使用您设置的正确默认时区

通过使用
DateTime
函数,您可以更准确地了解日期的解析方式:

$date = DateTime::createFromFormat('m/d/Y g:ia', "10/31/2012 7:30pm");
echo $date->format('U');

或者,如果你等到11月,问题就会自行解决:-)

我会说,这是因为目前纽约是夏令时——美国东部夏令时,而不是美国东部夏令时。这会影响这样的事情:

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"
快速修复方法可能是不将时区添加到字符串中,
strotime()
将使用您设置的正确默认时区

通过使用
DateTime
函数,您可以更准确地了解日期的解析方式:

$date = DateTime::createFromFormat('m/d/Y g:ia', "10/31/2012 7:30pm");
echo $date->format('U');

或者,如果您等到11月,问题就会自行解决:-)

有时您需要在PHP脚本中设置并忘记一个时间,移动到新的服务器可能会改变您的辛苦工作。例如,如果您使用字符串对时间进行日期处理,请将您的时区代码添加到字符串中,就像使用夏令时的New Yourk:“EDT”

echo日期('g:ia',strottime('10:59 EDT');//上午10:59

或者,如果您想提取特定时间的秒数,比如说10:59 pm,请使用以下方法:

echo gmdate('g:IA',标准时间('1970年1月1日格林尼治时间晚上10:59))//82740秒
//转换为晚上10:59

后者将以秒为单位为您提供(12+10小时(*60)和59分钟)*60,gmdate函数将从您传递给函数的任何秒数回显GMT时间。。如果你改为尝试约会,你很可能得不到10:59,除非你生活在格林威治标准时间(格林威治标准时间)


这个时区的东西可能会让人非常困惑,所以在制定一个非常具体的计划时,要非常小心,把它弄得乱七八糟。比如把某人的时间转换成你的时间等等。

有时候你需要在PHP脚本中设置并忘记一个时间,然后移动到一个新的服务器可能会改变你的辛苦工作。例如,如果您使用字符串对时间进行日期处理,请将您的时区代码添加到字符串中,就像使用夏令时的New Yourk:“EDT”

echo日期('g:ia',strottime('10:59 EDT');//上午10:59

或者,如果您想提取特定时间的秒数,比如说10:59 pm,请使用以下方法:

echo gmdate('g:IA',标准时间('1970年1月1日格林尼治时间晚上10:59))//82740秒
//转换为晚上10:59

后者将以秒为单位为您提供(12+10小时(*60)和59分钟)*60,gmdate函数将从您传递给函数的任何秒数回显GMT时间。。如果你改为尝试约会,你很可能得不到10:59,除非你生活在格林威治标准时间(格林威治标准时间)


这个时区的东西可能会让人非常困惑,所以在制定一个非常具体的计划时,要非常小心,把它弄得乱七八糟。比如把某人的时间转换成你的时间等等。

你真的应该发布生成这个时间的代码!你真的应该发布生成这个的代码!