php:将毫秒转换为日期

时间:2009-02-17 17:52:54

标签: php datetime time

我有一个等于日期的字符串,表示为自Unix纪元以来的毫秒数。

我正在尝试将其输出到d-m-Y。

我给的字符串是“1227643821310”,我被告知结果应该等于 2-12-2008 ,但我一直得到 25-11的结果-2008

我的代码如下:

$mil = 1227643821310;
$seconds = $mil / 1000;
echo date("d-m-Y", $seconds);

关于为什么会出现这种情况的任何想法?

6 个答案:

答案 0 :(得分:39)

你已经做得对了,1227643821根本不是02-12-2008,确​​实是25-11-2008。

答案 1 :(得分:17)

我刚刚添加了H:i:如下例所示:

$mil = 1227643821310;
$seconds = $mil / 1000;
echo date("d/m/Y H:i:s", $seconds);

答案 2 :(得分:1)

我唯一能想到的是在将其转换为日期之前尝试舍入小数部分。如果这不会改变结果,那么结果是正确的。

答案 3 :(得分:1)

杰夫,在处理时间戳时要理解的重要事项:它们代表的时间是从格林尼治标准时间0月1日0:00:00 ,而不是你的时区(除非你自己在GMT,当然)。

1227643821确实代表格林威治标准时间20:10:21 25.11.2008。

这是2008年11月25日在世界大部分地区,但是在莫斯科东部的时区(由于夏令时,在夏季莫斯科时区)已经是11月26日了。由于最“极端”的东部时区是格林尼治标准时间+14,所以世界上没有地方1227643821的时间戳可以代表晚于26日的日期。

在处理时区时,原始值的作者可能会有某种错误。或者只是错误。例如,在计算值时,在某个步骤添加秒而不是毫秒。

答案 4 :(得分:1)

$mil = 1227643821310;
$seconds = ceil($mil / 1000);
echo date("d-m-Y", $seconds);

答案 5 :(得分:0)

对于转换本身,我使用以下行:name = input('Whats your name? \n') number = int(input('Whats your number? \n'))

尽管答案很简单,但我也想发布一个示例代码片段以供使用,所以就存在了。

从中提取

$date = date('d-m-Y H:i:s', $millis / 1000);

随意使用它们:// explode values first in spaces and then in dashes $date = explode('-', explode(' ', $date)[0]); $day = $date[0]; $month = $date[1]; $year = $date[2];

输出:echo $day . '-' . $month . '-' . $year;