如何在php中分离日期、时间和时区


How to separate date,time and timezone in php?

来自API的日期值是"2015-12-16T22:14:26-0700",现在我需要在不使用DateTime对象的情况下将日期转换为"2015-12-16 22:14:26"。为了做到这一点,我正在努力匹配时区-最后是0700,并试图将日期划分为"2015-12-16","22:14:26","-0700"下面的代码返回一个数组。请让我知道我在哪里做错了。

如果中的日期即将到来,我也必须这样做

"2015-12-17 07:00:00 Etc/GMT"也采用此格式。

preg_match("/.*?([-+]d+)$/", "2015-12-16T22:14:26-0700", $timeZone);
print_r($timeZone);

这应该会拆分字符串。

preg_match("/('d{4}-'d{1,2}-'d{1,2})T('d{1,2}:'d{1,2}:'d{1,2})(-?'d{4})/", "2015-12-16T22:14:26-0700", $timeZone);

输出:

Array
(
    [0] => 2015-12-16T22:14:26-0700
    [1] => 2015-12-16
    [2] => 22:14:26
    [3] => -0700
)

PHP演示:https://eval.in/488702

Regex101演示(及说明):https://regex101.com/r/yJ0lV5/1

您当前的正则表达式将只捕获时区偏移量;如果您的数字元字符被更正为包含反斜杠,就像d+允许多个ds一样。正则表达式的功能演示,https://regex101.com/r/yJ0lV5/2.

Regex模式:

获取日期:

/[0-9]{4}-[0-9]{2}-[0-9]{2}[a-zA-Z]{1}/

获取时间:

/[0-9]{2}:[0-9]{2}:[0-9]{2}-[0-9]*/

不确定这是否是您想要的,但它会获得单独的日期和时间