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

Tilmann Faul T||m@nn_F@u| @end|ng |rom t-on||ne@de
Fri Apr 30 12:00:06 CEST 2021


Dear Enrico,

Thanks a lot, that clarifies the topic for me.
Checking the numeric representation i was not aware of.

Best Regards
Tilmann

On 30.04.21 11:17, Enrico Schumann wrote:
> 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.
>



More information about the R-help mailing list