php:将毫秒转换为日期

Posted

技术标签:

【中文标题】php:将毫秒转换为日期【英文标题】:php: convert milliseconds to date 【发布时间】:2010-10-08 03:53:19 【问题描述】:

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

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

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

我的代码如下:

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

关于为什么会这样的任何想法?

【问题讨论】:

【参考方案1】:
$mil = 1227643821310;
$seconds = ceil($mil / 1000);
echo date("d-m-Y", $seconds);

【讨论】:

【参考方案2】:

对于转换本身,我使用这一行:$date = date('d-m-Y H:i:s', $millis / 1000);

虽然答案很简单,但我也想贴一个示例 sn-p 以供使用,就这样吧。

从中提取daymonthyear

// 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;

输出:dd-mm-yyyy

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

Jeff,在处理时间戳时要了解的重要一点:它们表示从 0:00:00 01.01.1970 格林威治标准时间开始的时间,而不是在您的时区(除非您自己在当然是格林威治标准时间)。

1227643821 确实代表 GMT 时间 25.11.2008 20:10:21。

在世界大部分地区,这是 2008 年 11 月 25 日,但在莫斯科东部的时区(由于夏令时,莫斯科时区本身在夏季)已经是 11 月 26 日。由于最“极端”的东部时区是 GMT+14,因此世界上没有任何地方可以用 1227643821 的时间戳来表示晚于 26 日的日期。

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

【讨论】:

Ilya,确实 Unix 时间戳(POSTIX 时间)是自 GMT 纪元以来经过的时间量,但是,当您使用 php 的 date() 函数时,它会将该日期转换为您的服务器的本地时间等值。为了获得 GMT 时间的日期,您必须使用 PHP 的 gmdate() 函数。【参考方案5】:

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

【讨论】:

你确实是对的——事实证明我得到的来源是错误的。 echo date("d-m-Y", ($mil / 1000) ); - 有什么理由不只是保存一些代码并一次性完成所有工作吗?一直在寻找节省内存和减少不必要的内存/变量/行的方法。 这是我经常使用的另一个在线 Unix 纪元时间戳转换器:epochconverter.com【参考方案6】:

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

【讨论】:

以上是关于php:将毫秒转换为日期的主要内容,如果未能解决你的问题,请参考以下文章

H2 将日期转换为毫秒

AIX 转换时间戳

如何将日期时间对象转换为毫秒

PHP将剩余秒数(从现在开始)转换为日期

如何通过javascript将日期转换为毫秒? [复制]

python df:将日期索引从毫秒转换为天