[Rd] Date method of as.POSIXct does not respect tz
Kurt Hornik
Kurt@Horn|k @end|ng |rom wu@@c@@t
Fri Sep 23 09:57:49 CEST 2022
>>>>> Martin Maechler writes:
Currently in R-devel,
R> as.POSIXlt.Date
function (x, ...)
{
if (any((y <- unclass(x)) > .Machine$integer.max, na.rm = TRUE))
as.POSIXlt(.POSIXct(y * 86400), tz = "UTC")
else .Internal(Date2POSIXlt(x))
}
R> as.POSIXct.Date
function (x, ...)
.POSIXct(unclass(x) * 86400)
Adding tz to the latter is easy, and the former could do the if() part
also with a given tz without needing to change the .Internal?
Best
-k
>>>>> Roland Fuß
>>>>> on Tue, 20 Sep 2022 09:25:52 +0200 writes:
>> Hello, May I follow up on this? Has it fallen through the
>> cracks or were there considerations against passing `tz`
>> to `.POSIXct`?
>> Regards,
>> Roland
> Hmm... I don't remember even though I had replied positively
> to your question in May 2018.
> PROS (for allowing 'tz') to be passed to
> ---- as.POSIXct.Date() and hence ideally also to as.POSIXlt.Date()
> 1) as.POSIXct() and as.POSIXlt() all show with a 'tz' argument
> on the help page, and hence for consistency users should
> really expect that 'tz = ".."' also works in these two cases:
> Usage:
> as.POSIXct(x, tz = "", ...)
> as.POSIXlt(x, tz = "", ...)
> ## S3 method for class 'character'
> as.POSIXlt(x, tz = "", format,
> tryFormats = c("%Y-%m-%d %H:%M:%OS",
> "%Y/%m/%d %H:%M:%OS",
> "%Y-%m-%d %H:%M",
> "%Y/%m/%d %H:%M",
> "%Y-%m-%d",
> "%Y/%m/%d"),
> optional = FALSE, ...)
> ## Default S3 method:
> as.POSIXlt(x, tz = "",
> optional = FALSE, ...)
> ## S3 method for class 'numeric'
> as.POSIXlt(x, tz = "", origin, ...)
> 2) It is easy to be implemented for as.POSIXct() as you found
> already in 2018.
> CONS:
> -----
> 3) The 'Details:' section on the help page,
> end of 1st paragraph says
> Dates without times are treated as being at midnight UTC.
> So the current hardwired behavior is documented.
> 4a) For as.POSIXlt.Date() to allow passing 'tz' needs changes
> in the C code, i.e., is considerable more work than for the as.POSIXct(),
> (or actually just post-processing in the R code, much less work)
> 4b) Only changing the behavior for as.POSIXct() but not for as.POSIXlt()
> is also an inconsistency.
> My personal inclination would still be to do the change,
> by giving most weight to '1)' above.
> What do other experienced R developers think ?
> Martin
>> Am 17.05.2018 um 19:55 schrieb Martin Maechler:
>>>>>>>> Roland Fuß on Wed, 16 May 2018 17:21:07 +0200
>>>>>>>> writes:
>>> > R 3.5.0 Is it intended that the Date method of
>>> as.POSIXct > does not respect the tz parameter? I suggest
>>> changing > as.POSIXct.Date
>>>
>>> which is
>>>
>>> function (x, ...) .POSIXct(unclass(x) * 86400)
>>>
>>> > to this:
>>>
>>> function (x, tz = "", ...) .POSIXct(unclass(x) * 86400,
>>> tz = tz)
>>>
>>> or rather just forward the '...', i.e., use
>>>
>>> function (x, ...) .POSIXct(unclass(x) * 86400, ...)
>>>
>>> ??
>>>
>>> > Currently, the best workaround seems to be using the >
>>> character method if one doesn't want the default timezone
>>> > (which is often an annoying DST timezone).
>>>
>>> > This came up on Stack Overflow: >
>>> https://stackoverflow.com/q/50373340/1412059
>>>
>>> > --
>>> > Roland
>>>
>>> Thank you Roland for your notice (and the help on SO).
>>>
>>> Best, Martin
>> --
>> Dr. Roland Fuß
>> Thünen-Institut für Agrarklimaschutz/ Thünen Institute of
>> Climate-Smart Agriculture
>> Bundesallee 65 D-38116 Braunschweig, Germany
>> Tel.: ++49 531 596 2627 Fax: ++49 531 596 2699 Email:
>> roland.fuss using thuenen.de
>> Arbeitsgruppe "Emissionsberichterstattung"/ Working group
>> "Emission Inventories" Email:
>> emissionsinventare using thuenen.de
>> Das Johann Heinrich von Thünen-Institut,
>> Bundesforschungsinstitut für Ländliche Räume, Wald und
>> Fischerei – kurz: Thünen-Institut – besteht aus 15
>> Fachinstituten, die in den Bereichen Ökonomie, Ökologie
>> und Technologie forschen und die Politik beraten.
>> The Johann Heinrich von Thünen Institute, Federal Research
>> Institute for Rural Areas, Forestry and Fisheries – Thünen
>> Institute in brief – consists of 15 specialized institutes
>> that carry out research and provide policy advice in the
>> fields of economy, ecology and technology.
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
More information about the R-devel
mailing list