[R] Date Time, as.POSIXct used locale, strange plot behavior

Enrico Schumann e@ @end|ng |rom enr|co@chum@nn@net
Fri Apr 30 11:17:23 CEST 2021


On Fri, 30 Apr 2021, Tilmann Faul writes:

> Dear Jeff,
>
> Thanks for your answer.
> Sys.timezone()  gives
> [1] "Europe/Berlin"
> I tried "Europe/Berlin" as tz argument, giving the same result als using
> "CEST" (Central European Summer Time).
> It seems to me, that using as.POSIXct without tz argument defaults to tz
> UTC and with tz argument, either "CEST" or "Europ/Berlin" uses the
> European tz, regarding the plot.
> Never the less i do not understand why all of them have the same time
> printout on my system.
>
> as.POSIXct("2021-04-21 00:00:00", tz="CEST")
> # [1] "2021-04-21 CEST"
> as.POSIXct("2021-04-21 00:00:00", tz="Europ/Berlin")
> # [1] "2021-04-21 Europ"
> as.POSIXct("2021-04-21 00:00:00")
> # [1] "2021-04-21 CEST"
>
> Can someone comment on that, please?
>
> best Regards
> Tilmann

Timezone names in general are not portable (i.e. not
safe to use).  You may always specify a timezone name,
but it may be ignored:

    as.POSIXct("2021-04-21 00:00:00", tz = "PartyTime")
    ## "2021-04-21 PartyTime"

So just because your system prints "CEST", it does not
mean it has recognised it as a timezone. (To make it
even more complicated: your system may display a time
as "CEST", meaning a time in Central European Summer
Time, but still not accept "CEST" as _input_ for a
timezone name.)

'POSIXct' represents time as a number (seconds since
1970). To compare the results of different calls, it is
easier to compare those numbers.

    dput(as.POSIXct("2021-04-21 00:00:00", tz="CEST"))
    ## structure(1618963200, class = c("POSIXct", "POSIXt"), tzone = "CEST")
    dput(as.POSIXct("2021-04-21 00:00:00", tz="PartyTime"))
    ## structure(1618963200, class = c("POSIXct", "POSIXt"), tzone = "PartyTime")

    dput(as.POSIXct("2021-04-21 00:00:00", tz="Europe/Berlin"))
    ## structure(1618956000, class = c("POSIXct", "POSIXt"), tzone = "Europe/Berlin")
    dput(as.POSIXct("2021-04-21 00:00:00"))
    ## structure(1618956000, class = c("POSIXct", "POSIXt"), tzone = "")

So in your case, "CEST" is (most likely) not recognised
as a valid input for a timezone name, and hence it is
ignored, but still displayed.

HTH
    Enrico


> On 29.04.21 23:19, Jeff Newmiller wrote:
>> What is your TZ environment variable set to? That's what time conversion defaults to  ?DateTimeClasses
>> 
>> Also, I am not sure CEST is a valid timezone designation... it can be system dependent, but using one of the elements listed in ?OlsonNames.
>> 
>> On April 29, 2021 12:22:44 PM PDT, Tilmann Faul <Tilmann_Faul using t-online.de> wrote:
>>> Hy,
>>>
>>> stumbled over the following problem while plotting DateTime Objects.
>>>
>>> plot(as.POSIXct(c("2021-04-21 00:00:00", "2021-04-21 23:59:59")), c(0,
>>> 1), type='l')
>>>
>>> arrows(as.POSIXct("2021-04-21 00:00:00", tz="CEST"),
>>>       0.3,
>>>       as.POSIXct("2021-04-21 00:00:00", tz="CEST"),
>>>       0.2,
>>>       length=0.07, angle=15)
>>>
>>> # arrow at 02:00, why?
>>>
>>> arrows(as.POSIXct("2021-04-21 00:00:00"),
>>>       0.3,
>>>       as.POSIXct("2021-04-21 00:00:00"),
>>>       0.2,
>>>       length=0.07, angle=15, col='red')
>>>
>>> # arrow at 00:00 as expected
>>>
>>> as.POSIXct(c("2021-04-21 00:00:00", "2021-04-21 23:59:59"))[1]
>>> # [1] "2021-04-21 CEST"
>>> as.POSIXct("2021-04-21 00:00:00", tz="CEST")
>>> # [1] "2021-04-21 CEST"
>>> as.POSIXct("2021-04-21 00:00:00")
>>> # [1] "2021-04-21 CEST"
>>>
>>> all representations on my system are the same, why is the plot location
>>> of the arrows different??
>>> I am located in Germany, my locale:
>>> Sys.getlocale()
>>> [1]
>>> "LC_CTYPE=de_DE.UTF-8;LC_NUMERIC=C;LC_TIME=de_DE.UTF-8;LC_COLLATE=de_DE.UTF-8;LC_MONETARY=de_DE.UTF-8;LC_MESSAGES=de_DE.UTF-8;LC_PAPER=de_DE.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=de_DE.UTF-8;LC_IDENTIFICATION=C"
>>>
>>> Any Idea?
>>>
>>> Best regards
>>> Tilmann
>>>
>>> ______________________________________________
>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

-- 
Enrico Schumann
Lucerne, Switzerland
http://enricoschumann.net



More information about the R-help mailing list