来自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+
允许多个d
s一样。正则表达式的功能演示,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]*/
不确定这是否是您想要的,但它会获得单独的日期和时间