Bill Denney
2021-Jan-19 01:56 UTC
[R] Errors and OS Differences with as.POSIXct and as.POSIXlt
Hello,
Dates created with as.POSIXct differ between Windows/Mac and Linux.
Specifically this time that is during a gap when the hour does not exist
due to daylight savings time:
as.POSIXct("2018-03-11 02:09:36", tz="America/New_York")
Gives on Windows:
[1] "2018-03-11 EST"
Gives on Linux (Ubuntu 20.04):
[1] "2018-03-11 01:09:36 EST"
Since the time does not exist, and I think that NA should be returned.
Another issue and difference is that with as.POSIXlt on Linux, the invalid
time is presented:
as.POSIXlt("2018-03-11 02:09", tz="America/New_York")
Gives on Windows:
[1] "2018-03-11 EST"
Gives on Linux:
[1] "2018-03-11 02:09:00 EDT"
(Note that the time provided on Linux does not exist due to daylight
savings time.)
I think that for any invalid time, the result should be the same as an
invalid date: NA is returned.
What is the intended, appropriate time, and what is the best way to fix
this?
Thanks,
Bill
[[alternative HTML version deleted]]
Jeff Newmiller
2021-Jan-19 08:57 UTC
[R] Errors and OS Differences with as.POSIXct and as.POSIXlt
This is as described in the documentation, due to OS differences, e.g [1]. [1] https://stat.ethz.ch/R-manual/R-devel/library/base/html/strptime.html On January 18, 2021 5:56:11 PM PST, Bill Denney <wdenney at humanpredictions.com> wrote:>Hello, > > > >Dates created with as.POSIXct differ between Windows/Mac and Linux. >Specifically this time that is during a gap when the hour does not >exist >due to daylight savings time: > > > >as.POSIXct("2018-03-11 02:09:36", tz="America/New_York") > > > >Gives on Windows: > >[1] "2018-03-11 EST" > >Gives on Linux (Ubuntu 20.04): > >[1] "2018-03-11 01:09:36 EST" > > > >Since the time does not exist, and I think that NA should be returned. > > > >Another issue and difference is that with as.POSIXlt on Linux, the >invalid >time is presented: > > > >as.POSIXlt("2018-03-11 02:09", tz="America/New_York") > > > >Gives on Windows: > >[1] "2018-03-11 EST" > >Gives on Linux: > >[1] "2018-03-11 02:09:00 EDT" > > > >(Note that the time provided on Linux does not exist due to daylight >savings time.) > > > >I think that for any invalid time, the result should be the same as an >invalid date: NA is returned. > > > >What is the intended, appropriate time, and what is the best way to fix >this? > > > >Thanks, > > > >Bill > > [[alternative HTML version deleted]] > >______________________________________________ >R-help at 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.-- Sent from my phone. Please excuse my brevity.
Rui Barradas
2021-Jan-19 10:14 UTC
[R] Errors and OS Differences with as.POSIXct and as.POSIXlt
Hello,
R 4.0.3 on Ubuntu 20.04, sessionInfo() below.
A fix is to use as.POSIXct instead:
rui at rui:~$ Rscript --vanilla -e 'as.POSIXlt("2018-03-11 02:09",
tz="America/New_York")'
#[1] "2018-03-11 02:09:00 EDT"
rui at rui:~$ Rscript --vanilla -e 'as.POSIXct("2018-03-11 02:09",
tz="America/New_York")'
#[1] "2018-03-11 01:09:00 EST"
rui at rui:~$ Rscript --vanilla -e 'sessionInfo()'
R version 4.0.3 (2020-10-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 20.04.1 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.9.0
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.9.0
locale:
[1] LC_CTYPE=pt_PT.UTF-8 LC_NUMERIC=C
[3] LC_TIME=pt_PT.UTF-8 LC_COLLATE=pt_PT.UTF-8
[5] LC_MONETARY=pt_PT.UTF-8 LC_MESSAGES=pt_PT.UTF-8
[7] LC_PAPER=pt_PT.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=pt_PT.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_4.0.3
Hope this helps,
Rui Barradas
?s 01:56 de 19/01/21, Bill Denney escreveu:> Hello,
>
>
>
> Dates created with as.POSIXct differ between Windows/Mac and Linux.
> Specifically this time that is during a gap when the hour does not exist
> due to daylight savings time:
>
>
>
> as.POSIXct("2018-03-11 02:09:36",
tz="America/New_York")
>
>
>
> Gives on Windows:
>
> [1] "2018-03-11 EST"
>
> Gives on Linux (Ubuntu 20.04):
>
> [1] "2018-03-11 01:09:36 EST"
>
>
>
> Since the time does not exist, and I think that NA should be returned.
>
>
>
> Another issue and difference is that with as.POSIXlt on Linux, the invalid
> time is presented:
>
>
>
> as.POSIXlt("2018-03-11 02:09", tz="America/New_York")
>
>
>
> Gives on Windows:
>
> [1] "2018-03-11 EST"
>
> Gives on Linux:
>
> [1] "2018-03-11 02:09:00 EDT"
>
>
>
> (Note that the time provided on Linux does not exist due to daylight
> savings time.)
>
>
>
> I think that for any invalid time, the result should be the same as an
> invalid date: NA is returned.
>
>
>
> What is the intended, appropriate time, and what is the best way to fix
> this?
>
>
>
> Thanks,
>
>
>
> Bill
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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.
>