我正在寻找一种将多种字符串格式解析为日期/日期时间的方法。对于我的目的,as_datetime()
函数在下面的前3个中效果很好,但在第四个中却不能。有什么建议吗?
library(lubridate)
as_datetime("20200603", tz = "America/New_York")
as_datetime("20200603231413", tz = "America/New_York")
as_datetime("20200603231413-0400", tz = "America/New_York")
as_datetime("20200528203000+0000", tz = "America/New_York")
> as_datetime("20200603", tz = "America/New_York")
[1] "2020-06-03 EDT"
> as_datetime("20200603231413", tz = "America/New_York")
[1] "2020-06-03 23:14:13 EDT"
> as_datetime("20200603231413-0400", tz = "America/New_York")
Date in ISO8601 format; converting timezone from UTC to "America/New_York".
[1] "2020-06-03 23:14:13 EDT"
> as_datetime("20200528203000+0000", tz = "America/New_York")
[1] NA
Warning message:
All formats failed to parse. No formats found.
> as_datetime("20200528203116+0000", tz = "America/New_York")
[1] NA
Warning message:
All formats failed to parse. No formats found.
答案 0 :(得分:1)
您可以使用format=
提供更多格式,在这种情况下,请添加%z
定义为的?strptime
'%z' Signed offset in hours and minutes from UTC, so '-0800' is 8
hours behind UTC. Values up to '+1400' are accepted.
(Standard only for output. For input R currently supports it
on all platforms.)
library(lubridate)
as_datetime("20200603231413-0400", format = "%Y%m%d%H%M%S%z", tz = "America/New_York")
# [1] "2020-06-03 23:14:13 EDT"
as_datetime("20200628203000+0000", format = "%Y%m%d%H%M%S%z", tz = "America/New_York")
# [1] "2020-06-28 16:30:00 EDT"
as_datetime("20200528203116+0000", format = "%Y%m%d%H%M%S%z", tz = "America/New_York")
# [1] "2020-05-28 16:31:16 EDT"