如何从该字符串创建 php 日期时间对象
How to create a php datetime object from this string
我有这样的日期时间字符串:
2015-02-13 22:00 GMT+1 -DST
2015-03-20 21:00 GMT-5 +DST
我开始尝试的是:
<?php
$date = DateTime::createFromFormat('Y-m-d H:i ', '2015-03-20 21:00 GMT-5 +DST');
echo $date->format('d-m-Y H:i');
?>
但是我卡在了时区和夏令时。我在 http://php.net/manual/en/datetime.createfromformat.php 上看到我可以使用 e, O, P and T
作为时区,但我不明白哪个字符代表什么。我什至可以像这样直接使用它吗?我是否必须将 -5 转换为例如-0500?那什么性格呢?夏令时怎么办?
我在 http://php.net/manual/en/function.date.php 找到了这个。
是的,我相信你可以直接使用它。
e - Timezone identifier (added in PHP 5.1.0) Examples: UTC, GMT,
Atlantic/Azores
O - Difference to Greenwich time (GMT) in hours Example: +0200
P - Difference to Greenwich time (GMT) with colon between hours and
minutes (added in PHP 5.1.3) Example: +02:00
T - Timezone abbreviation Examples: EST, MDT ...
该日期字符串不常见,其中包含一些不必要的信息(在末尾)。为了解析它,我只是告诉 DateTime::createFromFormat()
使用 +
字符忽略 GMT
和 +DST
部分。 O
字符足够聪明,可以处理 -5
并将其转换为 -0500
。如果我们不忽略它们,则新 DateTime 对象中的时区不正确。
<?php
$date = DateTime::createFromFormat('Y-m-d H:i +O +', '2015-03-20 21:00 GMT-5 +DST');
echo $date->format('d-m-Y H:i');
我有这样的日期时间字符串:
2015-02-13 22:00 GMT+1 -DST
2015-03-20 21:00 GMT-5 +DST
我开始尝试的是:
<?php
$date = DateTime::createFromFormat('Y-m-d H:i ', '2015-03-20 21:00 GMT-5 +DST');
echo $date->format('d-m-Y H:i');
?>
但是我卡在了时区和夏令时。我在 http://php.net/manual/en/datetime.createfromformat.php 上看到我可以使用 e, O, P and T
作为时区,但我不明白哪个字符代表什么。我什至可以像这样直接使用它吗?我是否必须将 -5 转换为例如-0500?那什么性格呢?夏令时怎么办?
我在 http://php.net/manual/en/function.date.php 找到了这个。 是的,我相信你可以直接使用它。
e - Timezone identifier (added in PHP 5.1.0) Examples: UTC, GMT, Atlantic/Azores
O - Difference to Greenwich time (GMT) in hours Example: +0200
P - Difference to Greenwich time (GMT) with colon between hours and minutes (added in PHP 5.1.3) Example: +02:00
T - Timezone abbreviation Examples: EST, MDT ...
该日期字符串不常见,其中包含一些不必要的信息(在末尾)。为了解析它,我只是告诉 DateTime::createFromFormat()
使用 +
字符忽略 GMT
和 +DST
部分。 O
字符足够聪明,可以处理 -5
并将其转换为 -0500
。如果我们不忽略它们,则新 DateTime 对象中的时区不正确。
<?php
$date = DateTime::createFromFormat('Y-m-d H:i +O +', '2015-03-20 21:00 GMT-5 +DST');
echo $date->format('d-m-Y H:i');