我在xml文档中以毫秒为单位拉动unix时间,但在php 5.2.17中无法将其转换为可读日期(d-m-Y)。
我使用了http://www.epochconverter.com/来正确转换它 从 1328723926776 到 2/9/2012 13:37:49
我尝试了以下内容:
$timestamp = $xml['LastBackupDate'];
echo '<br />Method 1: '.date("d-m-Y", $timestamp);
echo '<br />Method 2: '.date("d-m-Y", strtotime($timestamp));
echo '<br />Method 3: '.date("d-m-Y", strtotime($timestamp*1000));
echo '<br />Method 4: '.date("d-m-Y", strtotime($timestamp/1000));
echo '<br />Method 5: '.date("d-m-Y", $timestamp/1000);
echo '<br />Method 6: '.date("d-m-Y", (int)$timestamp);
echo '<br />Method 7: '.date("d-m-Y", intval($timestamp));
echo '<br />Method 8: '.date("d-m-Y", intval($timestamp)/1000);
echo '<br />Method 9: '.date("d-m-Y", intval($timestamp/1000));
带回来:
Method 1:
Method 2: 01-01-1970
Method 3: 01-01-1970
Method 4: 01-01-1970
Method 5: 25-01-1970
Method 6: 19-01-2038
Method 7: 19-01-2038
Method 8: 25-01-1970
Method 9: 25-01-1970
任何想法如何转换这个? 谢谢!
编辑,使用时效果最佳:
echo date("d-m-Y", substr($xml['LastBackupDate'],0,-3));
答案 0 :(得分:0)
您是否尝试将除以1000
,而不是乘以?大纪元时间通常是几秒钟......
好的,所以现在我真的需要学习PHP ...
date
需要一种格式和时间。
strtotime
采用人类可读的日期/时间字符串并返回时间。您的值是以毫秒为单位的纪元时间,而不是人类可读的字符串,因此不是strtotime
的有效参数。
在没有strtotime
的情况下尝试方法4 ,不需要它。
是的,这不起作用,因为$timestamp
是一个字符串(我以为它已经是一个整数)。
你说删除字符串的最后3个字符可以获得大部分功能,这与转换为整数然后除以1,000相同。你的方法6&amp; 7转换为int但不分 - 你需要两个!
根据this,date
需要整数时间戳,以秒为单位。您拥有的值是一个字符串,因此您应该将其转换为整数。它也是以毫秒为单位,因此您必须除以1,000以获得正确的单位。
请注意,纪元时间计为自1970年1月1日以来的秒数。因此,每次看到01-01-1970
时,第二个参数都会计算为零。
date("d-m-Y", $timestamp); <-- string, not int: treated as zero
date("d-m-Y", strtotime($timestamp)); <-- not a formatted time, gives zero
date("d-m-Y", strtotime($timestamp*1000)); <-- ditto
date("d-m-Y", strtotime($timestamp/1000)); <-- ditto
date("d-m-Y", $timestamp/1000); <-- clearly nonzero, but no idea what!
date("d-m-Y", (int)$timestamp); <-- correct type but in milliseconds
date("d-m-Y", intval($timestamp)); <-- correct type but in milliseconds
如果传递一个包含秒数而不是毫秒数的整数,那么它应该是正确的。
像这样:
date("d-m-Y", intval($timestamp)/1000);