[Rd] Date method of as.POSIXct does not respect tz

Martin Maechler m@ech|er @end|ng |rom @t@t@m@th@ethz@ch
Fri Sep 23 09:46:34 CEST 2022


>>>>> 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.



More information about the R-devel mailing list