这个日期时间是什么格式的PHP 2012-08-16T21:14:03.447? 如何将其转换为时间戳,反之亦然?
我有时间戳格式1345108443790
,如何获取日期时间?
对于downvoted / close请求此问题的人:
当我试图将1345108443790
(我从第三方网站获得此值)转换为DateTime时,我得到了奇怪的结果,但经过多次尝试后,@ Truth的建议在修剪了最后3位后知道了(可能)是微秒?)然后在函数中传递它实际上解决了它并给出了正确的结果。这里需要学习的东西,只需点击一下即可!
答案 0 :(得分:2)
这类似于ISO 8601(虽然缺少时区),a.k.a。日期/时间戳的标准。
使用strtotime()
它正确解析它。您可能还想考虑DateTime
个对象。
工作示例:
$ts = strtotime("2012-08-16T21:14:03.447");
echo date("H:i:s Y-m-d", $ts);
答案 1 :(得分:2)
这个日期时间是什么格式的PHP 2012-08-16T21:14:03.447?
此格式包含在ISO 8601 International Standard中,尽管不是特别常用的示例。
除此之外:建议(在标准中)秒的分数前面有逗号而不是点。
如何将其转换为时间戳,反之亦然?
通常情况下,strtotime()
或DateTime
类。
$subject = '2012-08-16T21:14:03.447';
echo date('r', strtotime($subject));
// or
$datetime = new DateTime($subject);
echo $datetime->format('r');
我有时间戳格式1345108443790,如何获取日期时间?
这是Unix time,但以毫秒为单位。基本算术将以秒为单位为您提供Unix时间,您可以使用DateTime
格式创建@1234567890
对象。
$subject = 1345108443790;
$unixtime = (int) ($subject / 1000);
echo date('r', $unixtime);
// or
$datetime = new DateTime("@$unixtime");
echo $datetime->format('r');
如果您需要毫秒精度,则可以使用DateTime::createFromFormat()
。
$subject = 1345108443790;
$unixtime = (int) ($subject / 1000);
$millis = $subject % 1000;
$datetime = DateTime::createFromFormat('U u', "$unixtime $millis");
echo $datetime->format('r u');
答案 2 :(得分:1)
我同意@Truth's recommendation使用PHP的DateTime对象,因为从v5.2.2起这样可以毫无问题地处理微秒:
$dt = new DateTime('2012-08-16T21:14:03.447');
$timestamp = $dt->format('U.u'); // 1345151643.447000
$timestrng = $dt->format('Y-m-d\TH:i:s.u'); // 2012-08-16T21:14:03.447000