首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用as.Date()时获取NA

使用as.Date()时获取NA
EN

Stack Overflow用户
提问于 2016-07-22 13:20:29
回答 2查看 80关注 0票数 0

感谢下面的评论,我意识到我应该将"%b"用于"FEB" (最初我使用了"%m";感谢对?strptime的引用)。但我的问题依然存在。

当我这么做

代码语言:javascript
复制
as.Date("13-FEB-15", "%d-%b-%y")
# [1] NA

我知道这会奏效的:

代码语言:javascript
复制
as.Date("13-02-2015", "%d-%m-%Y")
# [1] "2015-02-13"

但是,是否有办法避免将FEB转换为02,将15转换为2015以获得预期的结果?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-22 13:34:43

--一个通用而有用的诊断

试试这个,你得到了什么?

代码语言:javascript
复制
format(strptime(Sys.Date(), format="%Y-%m-%d"), "%y-%b-%d")

我得到了

代码语言:javascript
复制
[1] "16- 7月-22"

哈哈,中间的是中国人。那到底是怎么回事?没什么不对的。问题是,%b对当前的区域设置很敏感。当您阅读?strptime时,要特别注意对当前区域设置敏感的格式。

我的地点是:

代码语言:javascript
复制
Sys.getlocale("LC_TIME")
#[1] "zh_CN.UTF-8"

对,那是在中国地区。

区域设置使日期-时间格式发生了变化。在我的机器上:

代码语言:javascript
复制
as.Date("16-JUL-22", "%y-%b-%d")
# NA
as.Date("16- 7月-22", "%y-%b-%d")
#[1] "2016-07-22"

现在让我们重置时间区域设置:

代码语言:javascript
复制
Sys.setlocale("LC_TIME", "C")
as.Date("16-JUL-22", "%y-%b-%d")
#[1] "2016-07-22"

哇,起作用了!要了解更多信息,请阅读?locales,您将了解locale = "C"的含义。

为您提供解决方案

代码语言:javascript
复制
Sys.setlocale("LC_TIME", "C")
as.Date("13-FEB-15", format = "%d-%b-%y")
票数 2
EN

Stack Overflow用户

发布于 2016-07-22 13:31:34

使用硼酸盐:

代码语言:javascript
复制
library(lubridate)
date1 = "2014-12-11 00:00:00"
date2 = "14-DEC-11"
ymd_hms(date1) == ymd(date2,tz = "UTC")

它们是平等的,应该能够结合在一起。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38527546

复制
相关文章

相似问题

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