【问题标题】:How to separate date,time and timezone in php?如何在php中分隔日期、时间和时区?
【发布时间】:2015-12-21 15:43:54
【问题描述】:

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

【问题讨论】:

  • @MarcB,OP 有,preg_match 中的第三个参数:$timeZone
  • 猜我应该正确启动 RTFScreen...
  • "不使用 DateTime 对象" - 为什么会有这个约束?

标签: php regex date datetime timezone


【解决方案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+ 也允许多个ds。正则表达式的功能演示,https://regex101.com/r/yJ0lV5/2

【讨论】:

  • 效果很好。感谢您对我的正则表达式问题的解释
【解决方案2】:

正则表达式模式:

获取日期:

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

获取时间:

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

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

【讨论】:

    猜你喜欢
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2017-11-04
    • 2015-04-23
    相关资源
    最近更新 更多