Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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 5.2 Unix时间(毫秒到d-m-Y)_Php 5.2_Unix Timestamp - Fatal编程技术网

Php 5.2 Unix时间(毫秒到d-m-Y)

Php 5.2 Unix时间(毫秒到d-m-Y),php-5.2,unix-timestamp,Php 5.2,Unix Timestamp,我从xml文档中提取unix时间(以毫秒为单位),但在PHP5.2.17中无法将其转换为可读日期(d-m-Y) 我使用了正确的转换方法 从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", s

我从xml文档中提取unix时间(以毫秒为单位),但在PHP5.2.17中无法将其转换为可读日期(d-m-Y)

我使用了正确的转换方法 从13287239267762/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));
你知道如何转换这个吗? 谢谢


编辑,使用以下命令可获得最佳结果:

echo date("d-m-Y", substr($xml['LastBackupDate'],0,-3));
你试过用1000除而不是乘吗?纪元时间通常以秒为单位


好的,现在我需要学习PHP

date
采用格式和时间。
strotime
获取人类可读的日期/时间字符串并返回时间。您的值是以毫秒为单位的历元时间,不是人类可读的字符串,因此不是
strotime
的有效参数

尝试方法4,但不使用strotime,应该不需要它


对,这不起作用,因为
$timestamp
是一个字符串(我假设它已经是一个整数)

您可以说删除字符串的最后3个字符可以得到大部分结果,这与转换为整数然后除以1000是一样的。您的方法6和7将转换为int,但不进行除法-您需要两者

根据,
date
需要以秒为单位的整数时间戳。您的值是一个字符串,因此应该将其转换为整数。它也是以毫秒为单位的,所以你必须除以1000才能得到正确的单位

请注意,自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

刚刚完成并更新了最初的问题。。。但这没用。你的方法1没有调用strotime,我认为这是正确的(只有单位是关闭的)。我做了更改并添加了方法5-似乎不起作用,但输出是不同的。。。还有其他想法吗?有趣的是,当我运行
ctime(1328723926)
时,它会给我
Wed Feb 8 12:58:46 2012
,这看起来很有道理。你的
$timestamp
是一个字符串吗?你需要显式地将它转换成整数吗?好的,我想我已经在某种程度上解决了这个问题。。。。我必须使用:$timestamp=substr($xml['LastBackupDate'],0,-3)从unix时间中删除最后3位数字;它给我的是2012年2月8日,而不是准确的2012年2月9日。我认为这与它不能在整个unix时间内阅读有关。不管怎样,对我来说已经够近了。非常感谢。
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);