Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

issue with flooring and ceiling dates #645

Closed
bart1 opened this issue Feb 22, 2018 · 5 comments

Comments

@bart1
Copy link

commented Feb 22, 2018

I noticed some strange results where ceiling date sometimes does not produce a rounded date (see the example where the time becomes 1 am)

> a<-structure(631166450, class = c("POSIXct", "POSIXt"), tzone = "")
> a
[1] "1990-01-01 05:00:50 CET"
> floor_date(a,'days');ceiling_date(a,'days')
[1] "1990-01-01 CET"
[1] "1990-01-02 01:00:00 CET"
> 
> a<-structure(631166450, class = c("POSIXct", "POSIXt"), tzone = "CET")
> a
[1] "1990-01-01 05:00:50 CET"
> floor_date(a,'days');ceiling_date(a,'days')
[1] "1990-01-01 CET"
[1] "1990-01-02 CET"
> 
> Sys.timezone()
[1] "Europe/Zurich"
> sessionInfo()
R version 3.4.2 (2017-09-28)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: OS X El Capitan 10.11.6

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] lubridate_1.7.2 browMod_0.1     Rcpp_0.12.15    move_3.0.3      rgdal_1.2-16    raster_2.6-7    sp_1.2-7        geosphere_1.5-7 mgcv_1.8-23    
[10] nlme_3.1-131   

loaded via a namespace (and not attached):
 [1] compiler_3.4.2     pillar_1.1.0       plyr_1.8.4         tools_3.4.2        digest_0.6.15      memoise_1.1.0      tibble_1.4.2       gtable_0.2.0      
 [9] lattice_0.20-35    rlang_0.1.6        Matrix_1.2-12      yaml_2.1.16        parallel_3.4.2     gridExtra_2.3      httr_1.3.1         stringr_1.2.0     
[17] xml2_1.2.0         stats4_3.4.2       grid_3.4.2         inline_0.3.14      R6_2.2.2           rstan_2.17.3       ggplot2_2.2.1      magrittr_1.5      
[25] splines_3.4.2      scales_0.5.0       codetools_0.2-15   StanHeaders_2.17.2 colorspace_1.3-2   stringi_1.1.6      lazyeval_0.2.1     munsell_0.4.3     
@bart1

This comment has been minimized.

Copy link
Author

commented Feb 22, 2018

Not sure if it relates to #642 but here is the test code anyway

> Sys.timezone()
[1] "Europe/Zurich"
> Sys.getenv("TZ")
[1] ""
> lubridate:::C_local_tz()
[1] "raster465"
> as.POSIXct("2017-08-13", tz = "")
[1] "2017-08-13 CEST"
> ymd("2017-08-13", tz = "")
[1] "2017-08-13 02:00:00 CEST"
> force_tz(as.POSIXct("2017-08-13", tz = ""), "UTC")
[1] "2017-08-12 22:00:00 UTC"
> 
> t1 <- as.POSIXct("2018-02-28 20:10:00")
> lubridate::minute(t1) <- 0
> t1
[1] "2018-02-28 21:00:00 CET"
> as.POSIXct("2017-07-01", format = "%Y-%m-%d") + days(1)
[1] "2017-06-02 02:00:00 CEST"
@vspinu

This comment has been minimized.

Copy link
Member

commented Feb 22, 2018

lubridate:::C_local_tz()
[1] "raster465"

Ok. This is messed up :( I am surprised you are not seeing explicit TZ errors with this.

For now setting Sys.setenv(TZ="Europe/Zurich") should fix this.

@vspinu

This comment has been minimized.

Copy link
Member

commented Feb 22, 2018

Would you mind checking the github version?

@bart1

This comment has been minimized.

Copy link
Author

commented Feb 27, 2018

I just installed the devel version from github and it seems to work
at least for the ceiling example

> Sys.timezone()
[1] "Europe/Zurich"
> Sys.getenv("TZ")
[1] ""
> lubridate:::C_local_tz()
[1] "Europe/Zurich"
> as.POSIXct("2017-08-13", tz = "")
[1] "2017-08-13 CEST"
> ymd("2017-08-13", tz = "")
[1] "2017-08-13 CEST"
> force_tz(as.POSIXct("2017-08-13", tz = ""), "UTC")
[1] "2017-08-13 UTC"
> 
> t1 <- as.POSIXct("2018-02-28 20:10:00")
> lubridate::minute(t1) <- 0
> t1
[1] "2018-02-28 20:00:00 CET"
> as.POSIXct("2017-07-01", format = "%Y-%m-%d") + days(1)
[1] "2017-07-02 CEST"
> 
> a<-structure(631166450, class = c("POSIXct", "POSIXt"), tzone = "")
> a
[1] "1990-01-01 05:00:50 CET"
> floor_date(a,'days');ceiling_date(a,'days')
[1] "1990-01-01 CET"
[1] "1990-01-02 CET"
> 
> a<-structure(631166450, class = c("POSIXct", "POSIXt"), tzone = "CET")
> a
[1] "1990-01-01 05:00:50 CET"
> floor_date(a,'days');ceiling_date(a,'days')
[1] "1990-01-01 CET"
[1] "1990-01-02 CET"
> 
> sessionInfo()
R version 3.4.2 (2017-09-28)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: OS X El Capitan 10.11.6

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] lubridate_1.7.2

loaded via a namespace (and not attached):
 [1] httr_1.3.1      compiler_3.4.2  magrittr_1.5    R6_2.2.2        tools_3.4.2     withr_2.1.1     curl_3.1        yaml_2.1.16    
 [9] Rcpp_0.12.15    memoise_1.1.0   stringi_1.1.6   knitr_1.20      git2r_0.21.0    stringr_1.3.0   digest_0.6.15   devtools_1.13.5
@vspinu

This comment has been minimized.

Copy link
Member

commented Feb 27, 2018

Ok. Perfect. Will release asap. Thanks for the report!

@bart1 bart1 closed this Feb 27, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants
You can’t perform that action at this time.