Hi all, I think I have discovered a bug in the conversion from POSIXlt to Date that has been introduced in r-devel.
It affects lubridate, but surprisingly didn't cause test failures there. Instead it caused test failures in users of lubridate, like slider, arrow, and admiral (see https://github.com/tidyverse/lubridate/issues/1069), and at least in slider I have been asked by CRAN to correct this issue before 2022-10-16. In r-devel we get the following: ``` data <- list( sec = 0, min = 0L, hour = 0L, mday = 31L, mon = c(0L, NA, 2L), year = 113L, wday = 4L, yday = 30L, isdst = 0L ) x <- .POSIXlt(xx = data, tz = "UTC") x #> [1] "2013-01-31 UTC" NA "2013-03-31 UTC" # Looks right as.POSIXct(x) #> [1] "2013-01-31 UTC" NA "2013-03-31 UTC" # Weird, where is the `NA`? as.Date(x) #> [1] "2013-01-31" "1970-01-01" "2013-03-31" ``` The POSIXlt object is length 3, but is only partially filled out. The other elements are all recycled to length 3 upon conversion to POSIXct or Date. But when converting to Date, we lose the `NA` value. I think the `as.Date()` conversion seems inconsistent with the `as.POSIXct()` conversion. It looks like this comes up because the conversion to Date now defaults to using `sec` if any of the date-like fields are `NA_INTEGER`, but this means the `NA` in the `mon` field is ignored. https://github.com/wch/r-source/blob/e10a971dee6a0ab851279c183cc21954d66b3be4/src/main/datetime.c#L1293-L1295 Thanks all, Davis Vaughan [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel