首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从日期中减去天数/向日期添加天数?

问如何从日期中减去天数/向日期添加天数?
EN

Stack Overflow用户
提问于 2010-02-13 04:41:58
回答 3查看 139.3K关注 0票数 74

我正在尝试建立文件夹来存储数据拉取。我想用拉取中该数据的日期标记文件夹。

例如。我从mysql中提取了5天前的数据,我想将文件夹命名为5天前的日期。

MySQL可以很容易地处理日期运算。我不确定R是如何做到的。我是否应该在POSIXct中减去适当的秒数,然后转换为POSIXlt以将文件夹命名为MM_DD_YYYY?

还是有更好的方法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-13 05:18:44

只需减去一个数字:

代码语言:javascript
复制
> as.Date("2009-10-01")
[1] "2009-10-01"
> as.Date("2009-10-01")-5
[1] "2009-09-26"

因为Date类只有几天,所以您可以只对它进行基本的算术运算。

如果您出于某种原因想要使用POSIXlt,那么您可以使用它的插槽:

代码语言:javascript
复制
> a <- as.POSIXlt("2009-10-04")
> names(unclass(as.POSIXlt("2009-10-04")))
[1] "sec"   "min"   "hour"  "mday"  "mon"   "year"  "wday"  "yday"  "isdst"
> a$mday <- a$mday - 6
> a
[1] "2009-09-28 EDT"
票数 108
EN

Stack Overflow用户

发布于 2010-02-13 05:05:40

答案可能取决于日期的格式,但这里有一个使用Date类的示例:

代码语言:javascript
复制
dt <- as.Date("2010/02/10")
new.dt <- dt - as.difftime(2, unit="days")

你甚至可以玩不同的单位,比如周。

票数 53
EN

Stack Overflow用户

发布于 2016-09-26 17:37:09

当然,有一个lubridate解决方案可以解决这个问题:

代码语言:javascript
复制
library(lubridate)
date <- "2009-10-01"

ymd(date) - 5
# [1] "2009-09-26"

等同于

代码语言:javascript
复制
ymd(date) - days(5)
# [1] "2009-09-26"

其他时间格式可以是:

代码语言:javascript
复制
ymd(date) - months(5)
# [1] "2009-05-01"

ymd(date) - years(5)
# [1] "2004-10-01"

ymd(date) - years(1) - months(2) - days(3)
# [1] "2008-07-29"
票数 43
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2254986

复制
相关文章

相似问题

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