【发布时间】:2016-01-19 04:31:57
【问题描述】:
此代码应显示昨天作为开始日期,并以今天作为最后一个选项结束。 它工作了几个月,我没有改变任何东西,但自从几周以来我得到了错误的日期。
如果我在本地运行此代码、在我的 ubuntu 服务器上运行 rstudio 或连接到运行此代码的闪亮服务器,它会显示前天。
Sys.setenv(TZ='GMT')
shinyApp(
ui <- basicPage(
dateRangeInput("daterange", "Daterange",start = Sys.Date()-1
,end = Sys.Date()-1,max=Sys.Date())
),
server <- function(input,output){}
)
我发现了这个问题,In Shiny for R, why does Sys.Date() return yesterday's date inside a dateInput?,并且 start=NULL,end=NULL 今天我得到了正确的结果,但是昨天我需要这对我来说没有解决方案。
如果我在控制台中运行 Sys.Date(),它会在本地和我的服务器上为我提供正确的日期。仅当我将其作为闪亮的应用程序运行时才会出现此问题。
21.10.2015 更新
感谢 Oskar Forsmo 建议在应用程序中获取 system("date") 的建议,我尝试了一下,这给了我正确的日期和时间。
它变得更加奇怪:
library(shiny)
values <- reactiveValues()
shinyApp(
ui <- basicPage(
uiOutput("timerange"),
textOutput( "today" )
),
server <- function(input,output){
isolate(values$day <- Sys.Date())
output$today <- renderText({
as.character(values$day-1)
})
output$timerange <- renderUI({ dateRangeInput("daterange", "Daterange",start = values$day-1
,end = values$day-1,max=values$day) })
})
在输出对象“今天”中我有正确的日期,在 uiOutput“时间范围”中我有错误的日期,它再次显示前天。
我会提供截图,因为我自己都不相信。
wrong day in dateRangeInput, right in textOutput
最重要的是,在闪亮的服务器上运行的应用程序向我的一些同事显示了正确的时间/日期,而有些人得到了相同的错误日期。
为了隔离错误,因为我在 renderText 中有正确的日期,所以我的桌面触发的 dateRangeInput 对象一定有问题?!
2015 年 10 月 29 日更新
我没有更改代码/服务器上的任何内容,但它现在显示正确的日期,不知道为什么,但它从今天开始就可以使用。如果有人知道为什么会发生这种情况,我将非常感激。
【问题讨论】:
-
你试过在 /usr/lib/R/etc/Renviron 中设置时区吗?
-
查看
Sys.timezone() -
我现在在 /usr/lib/R/etc/Renviron/Renviron.site 中使用 'TZ = "GMT" ' 行设置时区 - 我尝试了 GMT、CET 和 CEST。 sys.timezone()在RStudio中显示设置值,但问题依旧。
-
我刚刚检查了 ubuntu 服务器上的日期,它正确设置为 CEST。我现在真的很困惑,似乎不是时区问题。如上所述,我什至在我的 Windows 桌面上有这种行为。
-
嗯,那我不知道是什么原因造成的。出于好奇,如果您从闪亮的应用程序中获取
system("date")的日期会发生什么?