来自API的日期值为" 2015-12-16T22:14:26-0700"现在我需要将日期转换为" 2015-12-16 22:14:26"不使用DateTime对象。要做到这一点,我试图最终匹配时区-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);
答案 0 :(得分:1)
这应该拆分你的字符串。
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
。正则表达式的功能演示,https://regex101.com/r/yJ0lV5/2。
答案 1 :(得分:0)
正则表达式:
获取日期:
/[0-9]{4}-[0-9]{2}-[0-9]{2}[a-zA-Z]{1}/
抽出时间:
/[0-9]{2}:[0-9]{2}:[0-9]{2}-[0-9]*/
不确定这是否是您想要的,但它会将日期和时间分开