感谢下面的评论,我意识到我应该将"%b"用于"FEB" (最初我使用了"%m";感谢对?strptime的引用)。但我的问题依然存在。
当我这么做
as.Date("13-FEB-15", "%d-%b-%y")
# [1] NA我知道这会奏效的:
as.Date("13-02-2015", "%d-%m-%Y")
# [1] "2015-02-13"但是,是否有办法避免将FEB转换为02,将15转换为2015以获得预期的结果?谢谢!
发布于 2016-07-22 13:34:43
--一个通用而有用的诊断
试试这个,你得到了什么?
format(strptime(Sys.Date(), format="%Y-%m-%d"), "%y-%b-%d")我得到了
[1] "16- 7月-22"哈哈,中间的是中国人。那到底是怎么回事?没什么不对的。问题是,%b对当前的区域设置很敏感。当您阅读?strptime时,要特别注意对当前区域设置敏感的格式。
我的地点是:
Sys.getlocale("LC_TIME")
#[1] "zh_CN.UTF-8"对,那是在中国地区。
区域设置使日期-时间格式发生了变化。在我的机器上:
as.Date("16-JUL-22", "%y-%b-%d")
# NA
as.Date("16- 7月-22", "%y-%b-%d")
#[1] "2016-07-22"现在让我们重置时间区域设置:
Sys.setlocale("LC_TIME", "C")
as.Date("16-JUL-22", "%y-%b-%d")
#[1] "2016-07-22"哇,起作用了!要了解更多信息,请阅读?locales,您将了解locale = "C"的含义。
为您提供解决方案
Sys.setlocale("LC_TIME", "C")
as.Date("13-FEB-15", format = "%d-%b-%y")发布于 2016-07-22 13:31:34
使用硼酸盐:
library(lubridate)
date1 = "2014-12-11 00:00:00"
date2 = "14-DEC-11"
ymd_hms(date1) == ymd(date2,tz = "UTC")它们是平等的,应该能够结合在一起。
https://stackoverflow.com/questions/38527546
复制相似问题