【发布时间】:2020-06-18 02:31:01
【问题描述】:
假设一个日期指定为三个整数:年、月、日
年份为 4 位整数(如 2020),月份范围为 1-12,日期范围为 1-31。
我正在寻找一个简单的函数(称为 checkdate),它可以检查日期是否有效,如果有效则返回 TRUE,如果无效则返回 FALSE。
例如,checkdate(2008, 2, 29) 将返回 TRUE,因为 2008 年是闰年。
另一方面,checkdate(2009, 2, 29) 将返回 FALSE,因为 2009 年不是闰年。
checkdate(2009, 6, 31) 将返回 FALSE,因为 6 月只有 30 天。
等等
更新
根据 Dirk 的回答,下面是我所要求的功能:
checkdate = function(y, m, d) {
#y: A year, not abbreviated to 2 digits.
#m: An integer in the range 1-12.
#d: An integer in the range 1-31.
#Convert to an R Date object.
#If the date is not valid, NA is returned.
dt = as.Date(paste(y, m, d, sep='-'), optional=TRUE)
ifelse(is.na(dt), FALSE, TRUE)
}
【问题讨论】: