首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从今天开始减去n个工作日,以获得带有用户提示的过去日期?

如何从今天开始减去n个工作日,以获得带有用户提示的过去日期?
EN

Stack Overflow用户
提问于 2018-06-10 23:31:59
回答 1查看 62关注 0票数 1

我试着从今天开始倒数n个工作日,以得到一个具体的日期。

我想让用户输入倒数的天数,并让系统计算该日期。

假设我想从今天开始倒数100天(工作日)。

代码语言:javascript
复制
A <- readline(prompt = "How many days backwards do you want to count? ")

#user input: 100

Date to be calculated <- Today date-A (format yyyy/mm/dd)

#Date to be calculated = 2018-03-02 

然后,我将使用该日期来获取为该日期存储的数据集的一些值。

任何意见都将受到高度赞赏。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-11 01:29:17

一种选择是编写一个递归函数来减去工作日。可以使用chron::is.weekend函数来确定某一天是否为working-day。其他决定weekend/working-day的选项可以基于@Ryan建议的以S开始的一天。

代码语言:javascript
复制
library(chron)
substractWorkingDays <- function(x, n){
  v <- seq(x, x -n, by="-1 day")
  workingDays <- sum(!is.weekend(v[-1])) #One can check day name start with `S`
  if(workingDays == n){
    return(v[length(v)])
  }else{
    substractWorkingDays(v[length(v)], n-workingDays)
  }
}

#Testing it

substractWorkingDays(as.Date("2018-06-10"), 5)
#[1] "2018-06-04"
substractWorkingDays(as.Date("2018-06-10"), 10)
#[1] "2018-05-28"
substractWorkingDays(as.Date("2018-06-10"), 12)
#[1] "2018-05-24"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50785263

复制
相关文章

相似问题

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