【问题标题】:Cannot convert a date like yyyymmddThhmmss0+0000 [duplicate]无法转换像 yyyymmddThhmmss0+0000 这样的日期 [重复]
【发布时间】:2018-04-19 11:56:24
【问题描述】:

我正在从网络服务获取数据,但他们使用这种格式“yyyymmddThhmmss0+0000”发送日期 当我尝试从这种格式创建新的 DateTime 时,我收到此错误“DateTime::__construct(): Failed to parse time string ...”

  • 示例:“20161122T1030090+0000”

有人知道那是什么格式,以及如何从中实例化 dateTime 吗?

谢谢。

【问题讨论】:

  • 你的代码在哪里?你想要的结果是什么?
  • 嗨@mickmackusa,我有一个将日期转换为通用格式(祖鲁语)的功能。但在这种情况下,由于额外的“0”,我得到了一个错误
  • 我的意思是,您没有提供完整的问题。请编辑您的问题以符合 StackOverflow 问题要求。
  • 您想要的输出需要多少特异性?您可以截断不需要的内容吗?
  • 这可能值得一读:stackoverflow.com/q/33691428/2943403

标签: php datetime


【解决方案1】:

您可以使用DateTime::createFromFormat(),转义'\T' 和额外的0

$dt = DateTime::createFromFormat('Ymd\THis\0T','20161122T1030090+0000');
echo $dt->format("Y-m-d H:i:s") ;

输出:

2016-11-22 10:30:09

【讨论】:

  • 谢谢@syscall,但是还有另一种方法而不添加额外的 0 吗?这是正确的日期格式吗?
  • @webhobbit 是的,使用格式Ymd\THisuT,其中u 是微秒。大概就是这样。
  • 是的@Syscall,它可能是,也可能是“闰年”,如果是闰年,则为 1,否则为 0:D
  • 是的@webhobbit 也许在 web 服务文档中提到过?
  • 很遗憾没有,但我会在一小时后与他们会面 :) 非常感谢@Syscall (y)
【解决方案2】:

为UTC格式,需转换为mm/dd/yyyy HH:MM:SS格式

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-11
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 2016-06-13
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多