There are many caveats about OS specificity on the strptime help page, but most of them have to do with formatting and fewer with validation. My reading of the strptime page indicates that conversion with as.POSIXct() will validate daylight savings times which the examples I gave indicate it is not validating.
as.POSIXct on windows gives the expected value based on the help (the date part is valid, so it exists, but the time part is invalid, so it does not exist). On Linux, it makes an inaccurate conversion (as shown in my original message and in Rui's). If the results from as.POSIXct do not guarantee valid time conversion, only approximate conversion, then that should be made clearer in the help page. If valid time conversion is intended as a guarantee from as.POSIXct and as.POSIXlt, then this is a bug. >From strptime help: Remember that in most time zones some times do not occur and some occur twice because of transitions to/from ‘daylight saving’ (also known as ‘summer’) time. strptime does not validate such times (it does not assume a specific time zone), but conversion by as.POSIXct <https://stat.ethz.ch/R-manual/R-devel/library/base/help/as.POSIXct.html> will do so. On Tue, Jan 19, 2021, 3:57 AM Jeff Newmiller <jdnew...@dcn.davis.ca.us> wrote: > 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 < > wden...@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@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. > [[alternative HTML version deleted]] ______________________________________________ R-help@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.