繁体   English   中英

PHP Date到strtotime并恢复到最新状态?

[英]PHP Date to strtotime and back to date?

我想做的是将一个时间字符串转换为strtotime,然后使用之前的时区返回日期。

我正在使用以下代码,但是得到的结果是UTC:

$timeStart = "2013-04-25 18:14:00+03";
$datetimeStart = strtotime($timeStart);
$datetimeNext = strtotime('+8 hours',$datetimeStart);
$time = gmdate('Y-m-d\\TH:i:s\\Z', $datetimeNext);

有任何想法吗? 谢谢..

您应该使用date而不是gmdate

$time = date('Y-m-d\\TH:i:s\\Z', $datetimeNext);

我认为您的意思是您希望获得与原来相同的偏移量 阅读TimeZone标签Wiki “ TimeZone!=偏移”。

您的请求的主要问题是strtotime (根据docs )返回一个整数,该整数表示距UTC纪元以来的秒数。 因此,您提供的任何偏移量都会被考虑在内,但随后会被遗忘。

抱歉,我对PHP不够了解,无法提供代码示例,但是您可能可以从原始字符串中提取偏移量,然后在末尾重新应用它。 也有可能采用其他方法来解析字符串,该字符串将产生一个保持偏移量的对象。 同样,我对PHP的了解不足,无法在这里为您提供帮助。 在.NET中同样的问题会被解析成一个亟待解决DateTimeOffset而不是DateTime

另外-从逻辑上讲,您开始使用的偏移量不一定是添加时间后要使用的正确偏移量。 您可能已经过了夏令时过渡,这会使新的正确偏移量比原始偏移量少一个小时或一个小时。 您可能会或可能不会在乎此,这取决于您的担忧。 编辑后要校正偏移量的唯一方法是也要知道原始值所在的时区。

进行strtotime转换之前,尝试使用putenv设置您的时区。

http://php.net/manual/en/function.putenv.php

putenv("TZ=US/Central");
$today = date('F j, Y, g:i a');
$newdate = strtotime ($today) ;
$newdate = date ( 'F j, Y' , $newdate );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM