将字符串 (ISO) 转换为日期 PHP



我正在尝试将字符串转换为PHP中的日期。我收到的字符串是格式化的:-

"2016-07-16T1:22:04.324+1030"

"2016-12-20T03:24:59.000Z"

当我尝试这个

$newDate = DateTime::createFromFormat("c", $exp);
$expirationDate = $newFormat->getTimestamp();

DateTime失败。即使我尝试

$newDate = DateTime::createFromFormat(ISO8601, $exp;
$expirationDate = $newFormat->getTimestamp();

DateTime仍然失败。

任何建议将不胜感激。

你可以

这样尝试:-

<?php
$time = "2016-07-16T1:22:04.324+1030";
echo date("d M, Y",strtotime(date($time)));
?>

输出:- 16 7月, 2016 :- https://eval.in/594695

参考资料:-

在 PHP 中将 ISO 8601 格式转换为 d M Y

注意:- 您可以根据自己的方便更改日期格式。 如D M d Y h:i:s O T。我在 PHP 5.5.4、PHP 5.5.14、PHP 7 上检查了这段代码

您在此处传递的date format不是您在函数中比较的那个,它应该如下所示

$exp = "2016-07-16T1:22:04.324+1030";
$newDate = DateTime::createFromFormat("Y-m-dTG:i:s.uO",$exp);
echo $newDate->format("Y-m-d H:i:s O");//2016-07-16 01:22:04 +1030
$dateval="2016-07-16T1:22:04.324+1030";
$dateval=str_replace("T"," T",$dateval);
$date = new DateTime($dateval);
echo $date->format('D M d Y h:i:s O T');//outputs your given time
echo "<br />";

echo date("D M d Y h:i:s O T",strtotime($dateval));//outputs your based on your timezone time

希望它能有所帮助

虽然我回答这个问题的时间比提问晚得多,但我觉得以下几点将有助于证实已经提供的答案。

使用strtotime函数时要记住的要点:

1. 年份为两位数:如果在字符串中以两位数指定年份,则 00-69 之间的值映射到 2000-2069 年,将 70-99 映射到 1970-1999。32 位可能会出现差异。

2.使用分隔符

使用分隔符可能会出现意外输出。分隔斜杠 ("/"( 将指示 PHP 日期采用美式格式,即 m/d/y。虽然分隔符破折号或点("-"或"."(将允许PHP采用欧洲格式,即d-m-y。此外,如果年份是用短划线分隔符以两位数指定的,那么 PHP 将假定它为 y-m-d 格式。

3. 时间戳范围:典型的有效时间戳范围从 1901 年 12 月 13 日星期五 20:45:54 UTC 到 2038 年 1 月 19 日星期二 03:14:07 UTC,表示最小和最大 32 位有符号整数。但是,对于 64 位版本的 PHP,时间戳的有效范围实际上是无限的。

4.检查字符串是否为有效时间戳:在strtotime函数中作为参数提供的字符串可以提供不同版本的不同结果。低于 5.1.0 的 PHP 将在失败时返回 -1,而更高版本将返回 false

参考资料:http://php.net/manual/en/function.strtotime.php

相关内容

  • 没有找到相关文章

最新更新