如何以日期时间格式变量获取时间或日期

时间:2019-10-06 16:33:29

标签: php datetime

我有一个像这样的变量

$string = '2019-10-07T19:00:00+07:00';

它是ISO8601格式的日期时间。 我怎么只能得到日期或时间?

或者有什么方法可以将其转换为另一种格式?

like:

$str = '2019-10-07'

谢谢您的帮助!

2 个答案:

答案 0 :(得分:2)

最简单的方法是将您的字符串转换为php时间(整数) 然后仅显示该时间的年,月和日。

 $string = '2019-10-07T19:00:00+07:00';
 echo $string;
 echo "</br>";
 echo date("Y-m-d", strtotime($string));

 > result :
 > 2019-10-07T19:00:00+07:00
 > 2019-07-10

https://www.php.net/manual/en/function.date.php

https://www.php.net/manual/en/function.strtotime.php

希望有帮助

答案 1 :(得分:0)

输入字符串包含时区信息(+07:00)。 DateTime类可确保您使用此时区,而不管服务器的区域设置如何。

$string = '2019-10-07T01:00:00+07:00';
$dt = date_create($string);

var_dump($dt);
//object(DateTime)#1 (3) { ["date"]=> string(26) "2019-10-07 01:00:00.000000" ["timezone_type"]=> int(1) ["timezone"]=> string(6) "+07:00" }

echo $dt->format('Y-m-d');
//2019-10-07

date()使用服务器的本地时区。如果这与输入字符串的时区不匹配,则结果将是错误的:

setlocale(LC_ALL, 'nl_NL');

$string = '2019-10-07T01:00:00+07:00';
echo date("Y-m-d H:i:s",strtotime($string));

输出

2019-10-06 20:00:00