On 2023/5/11 23:06, Ivan Krylov wrote:> ? Thu, 11 May 2023 22:15:49 +0800 > Jinsong Zhao <jszhao at yeah.net> ?????: > >> > (d <- strptime("1970-01-01 12:00:00 UTC", "%Y-%m-%d %H:%M:%OS", tz >> > = "")) >> [1] "1970-01-01 12:00:00 CST" >> > is.na(d) >> [1] TRUE > > Glad to see you're making progress! (Sometimes, is.na(strptime(...)) => TRUE is what progress looks like.) > > is.na.POSIXlt works by converting the "unpacked" date+time into POSIXct > (seconds since 1970-01-01 00:00 UTC) and then checking whether it's NA. > Evidently, as.POSIXct(d) returns NA. (Right?) > > What does unclass(d) look like on FreeBSD? Does it contain any NAs > itself, or do they originate somewhere in as.POSIXct(d)?I just forgot to answer your question. unclass(d) has $gmtoff with value of NA. However, in R 4.3.0 on Windows this slot also has the value of NA. as.POSIXct(d) on FreeBSD gives NA.> > My current hypothesis is that FreeBSD mktime() doesn't like something > about the timezone, but I may be wrong. Is is.na(strptime( > "1970-01-03 12:00:00 UTC", "%Y-%m-%d %H:%M:%OS", tz = '')) also TRUE? >
Hi! I ran the code
(d <- strptime("1970-01-01 12:00:00 UTC", "%Y-%m-%d
%H:%M:%OS", tz = ""))
is.na(d)
dput(unclass(d))
as.POSIXct(d)
(d <- is.na(strptime("1970-01-03 12:00:00 UTC", "%Y-%m-%d
%H:%M:%OS", tz = '')))
is.na(d)
dput(unclass(d))
as.POSIXct(d)
on ?R 4.2.3-1 on Linux 6.2.11-arch1-1? and
?R 4.1.0 on FreeBSD 13.0-RELEASE #0 releng/13.0-n244733-ea31abc261f,?
yielding the same result:
[1] "1970-01-01 12:00:00 CET"
[1] FALSE
list(sec = 0, min = 0L, hour = 12L, mday = 1L, mon = 0L, year = 70L,
wday = 4L, yday = 0L, isdst = 0L, zone = "CET", gmtoff =
NA_integer_)
[1] "1970-01-01 12:00:00 CET"
[1] FALSE
[1] FALSE
FALSE
Error in as.POSIXct.default(d) :
do not know how to convert 'd' to class ?POSIXct?
Calls: as.POSIXct -> as.POSIXct.default
Execution halted
Best,
Rasmus