gpt4 book ai didi

r - 润滑 yyyy-MM-dd'T'HH :mm:ssX conversion unexpected. 错误?

转载 作者:行者123 更新时间:2023-12-04 10:39:40 25 4
gpt4 key购买 nike

解析“yyyy-MM-dd'T'HH:mm:ssX”-string (ISO 8601) 时出现非常意外的行为

> as_datetime("2017-03-22T15:48:00.000Z")
[1] "2017-03-21 23:00:00 UTC"

> packageDescription("lubridate")$Version
[1] "1.6.0"

有人能解释一下这样做的理由吗?

编辑:似乎是一个错误,请参阅 issue #536

最佳答案

更新:在 lubridate 提交中解决 here (2017 年 5 月)。适用于 lubridate 1.7.4,可能还有一些早期版本。

无需深入了解 as_datetime 的内容,我认为这可能是 (1) as_datetime 的组合无法以您的格式处理(即忽略)T;(2) 本地时区到UTC时区的转换。

dstr <- "2017-03-22T15:48:00.000Z"
library(lubridate)
as_datetime(dstr)
## [1] "2017-03-22 04:00:00 UTC"

如果 as_datetime() 忽略 T 之后的所有内容这让我们在 2017 年 3 月 22 日午夜。然而,这是在我的本地时区是 GMT+04 的午夜,所以结果时间是 04:00:00。大概是你本地时间是 GMT-01。

如果您手动将空格替换为 T 事情会更好(您可以使用stringr::str_replace 如果你愿意)

as_datetime(sub("T"," ",dstr))
## [1] "2017-03-22 19:48:00 UTC"

或者使用strptime:

strptime(dstr,format="%Y-%m-%dT%H:%M:%S")
## [1] "2017-03-22 15:48:00 EDT"

(注意strptime会自动丢弃尾随个字符)

Dirk Eddelbuettel 的 anytime 包可以处理这种情况:

 anytime(dstr)
## [1] "2017-03-22 15:48:00 EDT"

关于r - 润滑 yyyy-MM-dd'T'HH :mm:ssX conversion unexpected. 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43522132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com