I've been searching for patterns in why some POSIXlt objects have the zone and gmtoff components and some don't and why gmtoff is sometimes NA when the zone is known. Is there a pattern or is it just that the additional fields and workarounds were added in an ad hoc way?
E.g., as.POSIXlt adds the zone and gmtoff components for all strings and logical NA inputs if the time zone is not GMT or UTC f <- function (lt) { stopifnot(inherits(lt, "POSIXlt")) cat(format(lt), ", $zone=", deparse(lt$zone), ", $gmtoff=", deparse(lt$gmtoff), "\n", sep = "") } f(as.POSIXlt("2018-03-08 16:31", tz="US/Pacific")) # 2018-03-08 16:31:00, $zone="PST", $gmtoff=NA_integer_ f(as.POSIXlt(NA, tz="US/Pacific")) # NA, $zone="", $gmtoff=NA_integer_ f(as.POSIXlt(NA_character_, tz="US/Pacific")) # NA, $zone="", $gmtoff=NA_integer_ But in GMT or UTF it omits the zone and gmtoff components unless you give it a single character NA f(as.POSIXlt("2018-03-08 16:31", tz="GMT")) # 2018-03-08 16:31:00, $zone=NULL, $gmtoff=NULL f(as.POSIXlt(NA, tz="GMT")) # NA, $zone=NULL, $gmtoff=NULL f(as.POSIXlt(NA_character_, tz="GMT")) # NA, $zone="", $gmtoff=NA_integer_ Another oddity is that as.POSIXlt(characterData, tz="not-GMT") fills the gmtoff component with NAs even though the zone and isdst components give the information required to figure out the gmtoff. as.POSIXlt(POSIXctData) does give proper values to gmtoff f(as.POSIXlt("2019-03-08", tz="US/Pacific")) # 2019-03-08, $zone="PST", $gmtoff=NA_integer_ f(as.POSIXlt(as.POSIXct("2019-03-08", tz="US/Pacific"))) # 2019-03-08, $zone="PST", $gmtoff=-28800L Is this last an efficiency issue? Bill Dunlap TIBCO Software wdunlap tibco.com [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel