首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >format = "“时as.Date的行为

format = "“时as.Date的行为
EN

Stack Overflow用户
提问于 2019-07-16 22:35:36
回答 1查看 279关注 0票数 0

我有一个简单的问题。

as.Date函数是如何工作的?

有人能解释一下为什么一个简单的""会改变下面代码中的所有东西吗?

代码语言:javascript
复制
as.Date("03/04/2019")
#[1] "0003-04-19"

as.Date("03/04/2019", "")
#[1] "2019-07-16"
EN

回答 1

Stack Overflow用户

发布于 2019-07-16 22:59:02

这直接来自您使用?as.Date查看的帮助页面

代码语言:javascript
复制
## S3 method for class 'character'
as.Date(x, format, tryFormats = c("%Y-%m-%d", "%Y/%m/%d"),
        optional = FALSE, ...)

字符串x: object to converted.

  • format:
  • 。如果未指定,它将在第一个非NA元素上逐个尝试tryFormats,如果没有一个有效,则会给出一个错误。否则,将通过strptime进行处理。

因此,在第一种情况下,我们不提供format。在本例中,as.Date尝试以下格式:“年-月-日”和“年/月/日”。在本例中,第二个函数“工作”,因此我们得到以下返回:

代码语言:javascript
复制
as.Date("03/04/2019") 
[1] "0003-04-20"

03解释为年,04解释为月,2019解释为日。因为日期只能是数字,所以只使用前两个数字。

在第二种情况下,我们自己提供格式:

代码语言:javascript
复制
as.Date("03/04/2019", format = "") 
[1] "2019-07-16"

如果提供了formatas.Date不会尝试任何格式。相反,返回的是strptime("03/04/2019", format = "")。在strptime的帮助页面中,您可以找到以下内容:

strptime的

输入字符串不需要完全指定日期:假设未指定的秒、分钟或小时为零,未指定的年、月或日为当前日期。

因此,您提供了一种格式,但它不包含任何内容,因此返回当前日期。

在任何情况下,您都可以自己指定格式:

代码语言:javascript
复制
as.Date("03/04/2019", format = "%d/%m/%Y") 
[1] "2019-04-03"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57059770

复制
相关文章

相似问题

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