[英]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.