如何在PHP中分隔日期,时间和时区?

时间:2015-12-21 15:43:54

标签: php regex date datetime timezone

来自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);

2 个答案:

答案 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]*/

不确定这是否是您想要的,但它会将日期和时间分开