首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DateTime CreateFromFormat的RFC3339问题

使用DateTime CreateFromFormat的RFC3339问题
EN

Stack Overflow用户
提问于 2021-06-08 13:35:17
回答 2查看 236关注 0票数 1

我有一个日期-时间标记:

代码语言:javascript
复制
"2021-06-08T13:09:00.9796129Z"

而且我不能使用DateTime将其转换为CreateFromFormat对象。我使用的是JanePHP规范器,所以希望严格使用CreateFromFormat来解决这个问题。我尝试了以下几点:

代码语言:javascript
复制
$options = [
    \DateTimeInterface::ATOM,
    \DateTimeInterface::COOKIE,
    \DateTimeInterface::ISO8601,
    \DateTimeInterface::RFC822,
    \DateTimeInterface::RFC850,
    \DateTimeInterface::RFC1036,
    \DateTimeInterface::RFC1123,
    \DateTimeInterface::RFC7231,
    \DateTimeInterface::RFC2822,
    \DateTimeInterface::RFC3339,
    \DateTimeInterface::RFC3339_EXTENDED,
    \DateTimeInterface::RSS,
    \DateTimeInterface::W3C,
    'Y-m-dTH:i:s.uP',
    'Y-m-dTH:i:s.P',
    'Y-m-dTH:i:s.vP',
];

foreach ($options as $name) {
    var_dump(\DateTime::createFromFormat($name, "2021-06-08T13:09:00.9796129Z"));
}

所有的结果都是:

代码语言:javascript
复制
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)

正确的格式是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-08 13:46:38

你有一个简单的问题,还有一个更复杂的问题。

简单的问题是,要匹配文字T,需要用反斜杠来转义它。这应该允许这种模式:

‘Y\TH:I:s.uP’

(年月日,文字T,hour:minute:second.microsecond,时区)

复杂的问题是,时间戳在秒内有7个小数位,分辨率为十分之一微秒。这就是为什么u说明符不匹配的原因:

u:微秒(最多六位数)

解决办法是使用?与任何单个字节匹配的说明符:

‘Y-m-d:I:S.U?P’

(年月日,文字T,hour:minute:second.microsecond,忽略额外数字时区的字节)

代码语言:javascript
复制
var_dump(\DateTime::createFromFormat('Y-m-d\TH:i:s.u?P', "2021-06-08T13:09:00.9796129Z"));

# object(DateTime)#1 (3) {
#   ["date"]=>
#   string(26) "2021-06-08 13:09:00.979612"
#   ["timezone_type"]=>
#   int(2)
#   ["timezone"]=>
#   string(1) "Z"
# }
票数 1
EN

Stack Overflow用户

发布于 2021-06-08 13:44:11

您没有转义T,所以它试图使用它作为占位符(Timezone缩写)。正确的格式是

代码语言:javascript
复制
'Y-m-d\TH:i:s.u\Z'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67888073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档