
R Under development (unstable) (2022-03-19 r81942) -- "Unsuffered Consequences"
Copyright (C) 2022 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> #### Test R's (64-bit) date-time functions .. output tested *sloppily*
> 
> ## R's internal fixes are used on 32-bit platforms.
> ## macOS gets these wrong: see HAVE_WORKING_64BIT_MKTIME
> 
> Sys.setenv(TZ = "UTC")
> (z <- as.POSIXct("1848-01-01 12:00"))
[1] "1848-01-01 12:00:00 UTC"
> c(unclass(z))
[1] -3849940800
> (z <- as.POSIXct("2040-01-01 12:00"))
[1] "2040-01-01 12:00:00 UTC"
> c(unclass(z))
[1] 2209032000
> (z <- as.POSIXct("2040-07-01 12:00"))
[1] "2040-07-01 12:00:00 UTC"
> c(unclass(z))
[1] 2224756800
> 
> Sys.setenv(TZ = "Europe/London")  # pretty much portable.
> (z <- as.POSIXct("1848-01-01 12:00"))
[1] "1848-01-01 12:00:00 GMT"
> c(unclass(z))
[1] -3849940800
> ## We don't know the operation of timezones next year let alone in 2040
> ## but these should at least round-trip
> ## These got the wrong timezone on Linux with glibc 2.2[67]
> as.POSIXct("2040-01-01 12:00")
[1] "2040-01-01 12:00:00 GMT"
> as.POSIXct("2040-07-01 12:00")
[1] "2040-07-01 12:00:00 BST"
> 
> Sys.setenv(TZ = "EST5EDT")  # also pretty much portable.
> (z <- as.POSIXct("1848-01-01 12:00"))
[1] "1848-01-01 12:00:00 EST"
> c(unclass(z))
[1] -3849922800
> ## see comment above
> as.POSIXct("2040-01-01 12:00")
[1] "2040-01-01 12:00:00 EST"
> as.POSIXct("2040-07-01 12:00")
[1] "2040-07-01 12:00:00 EDT"
> 
> ## PR15613: had day as > 24hrs.
> as.POSIXlt(ISOdate(2071,1,13,0,0,tz="Etc/GMT-1"))$wday
[1] 2
> as.POSIXlt(ISOdate(2071,1,13,0,1,tz="Etc/GMT-1"))$wday
[1] 2
> 
> 
> ## Incorrect use of %b should work even though abbreviation does match
> Sys.setlocale("LC_TIME", "C") # to be sure
[1] "C"
> stopifnot(!is.na(strptime("11-August-1903", "%d-%b-%Y")))
> 
> ## Prior to R 4.0.0 this oveflowed an array.  Now gives a warning
> 
> z <- paste("2017", c(1,365,366), sep = "-")
> (zz <- strptime(z, "%Y-%j"))
[1] "2017-01-01 EST" "2017-12-31 EST" NA              
Warning message:
In strptime(z, "%Y-%j") : day-of-year 366 in year 2017 is invalid
> stopifnot(identical(is.na(zz), c(FALSE, FALSE, TRUE)))
> 
