这个问题本质上就是计算某一年的 2 月份有多少天,我之所以会遇到这个问题是因为我在写 CNID 包的时候遇到了一个要判断身份证号码是否符合逻辑的问题。下面我给出计算某个月有多少天的函数。 mdays = function( month, year = as.integer(format(Sys.Date(), "%Y")) ) { if (is.na(as.numeric(month))) { stop("month must be numeric value") } if (is.na(as.numeric(year))) { stop("year must be numeric value") } month = as.integer(month) year = as.integer(year) if (month < 1 || month > 12) { stop("The month must be between 1 and 12") } days_in_month = integer(12) days_in_month[c(1, 3, …