【问题标题】:Separate Date and Time from concatenated timestamp variable - PHP从连接的时间戳变量中分离日期和时间 - PHP
【发布时间】:2018-05-06 23:06:08
【问题描述】:

我正在调用 API。 返回的时间戳格式如下:

"Date":"2018-05-06T23:42:03+01:00"

如何区分日期和时间?

到目前为止,我所拥有的是:

$ts = "2018-05-06T23:42:03+01:00";
$date = substr($ts, 0, strpos($ts, "T"));
$date = str_replace($date,"T","");

虽然这可行,但有更好的方法吗?

【问题讨论】:

  • 您要解决的具体问题是什么?鉴于它是格式正确的 RFC3339,为什么要将其视为字符串?
  • 是的 - 将它们分开,以便我可以将它们存储在一个表中 - 1 个属性用于时间,另一个用于日期 - 如果我只依赖日期,我的查询会更快。
  • 你没有关注我:为什么你把它当作一个字符串,而你可以把它当作一个适当的瞬间? 3v4l.org/uNGfG
  • 相关但不重复:RFC 3339 how make a dateTime from

标签: php timestamp string-formatting


【解决方案1】:

在格式正确的 RFC3339 日期时间上使用字符串函数是一种不好的做法。

取而代之的是使用日期时间解析函数

$dt = \DateTime::createFromFormat(\DateTime::RFC3339, '2018-05-06T23:42:03+01:00');

var_dump($dt->format('H:i:s'));

在线演示:https://3v4l.org/uNGfG

参考资料:

【讨论】:

    【解决方案2】:

    请分开

    $ts = "2018-05-06T23:42:03+01:00";
    $splits = explode('T', $ts);
    $date = $splits[0]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-17
      • 2013-06-16
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 2012-04-15
      • 2013-01-05
      相关资源
      最近更新 更多