此代码应该显示昨天作为开始日期和结束日期作为最后一个选项。 它工作了几个月,我没有改变任何东西,但几个星期后我得到了错误的日期。
如果我在本地运行此代码,在我的ubuntu服务器上运行rstudio或连接到运行此代码的闪亮服务器,它会显示前一天。
[1,2,3]
我发现了这个问题,In Shiny for R, why does Sys.Date() return yesterday's date inside a dateInput?和 with start = NULL,end = NULL我今天得到了正确的结果,但正如我昨天所需要的,这对我来说没有解决方案。
如果我在控制台中运行Sys.Date(),它会在本地和我的服务器上为我提供正确的日期。如果我将其作为闪亮的应用程序运行,则只会出现此问题。
我感谢Oskar Forsmo建议在应用程序中获取系统(“日期”),这给了我正确的日期和时间。
它变得更加奇怪:
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){}
)
在输出对象“今天”我有正确的日期,在uiOutput“时间范围”我错了一天,它在前天再次显示。
我要提供截图,因为我不相信自己。
wrong day in dateRangeInput, right in textOutput
最重要的是,在闪亮的服务器上运行的应用程序向我的一些同事显示正确的时间/日期,有些人得到相同的错误日期。
要隔离错误,因为我在renderText中有正确的一天,在我的桌面触发的dateRangeInput对象的某个地方一定有问题吗?!
我没有更改代码/服务器上的任何内容,但它现在显示正确的日期,不知道为什么但它今天起作用..如果有人知道为什么会发生这种情况我真的很感激。/ p>
答案 0 :(得分:1)
我遇到了同样的问题,原因是本地时区与服务器时区不同。当我将每个日期转换为POSIX日期(包括时区)时,我能够获得正确的日期。如果您希望闪亮显示由Sys.Date()
创建的原始格式,则还必须使用format
参数。
这是工作代码:
dateRangeInput("daterange", "Daterange", start = as.POSIXct(Sys.Date()-1),
end = as.POSIXct(Sys.Date()-1), max = as.POSIXct(Sys.Date())),
format = 'yyyy-mm-dd')
答案 1 :(得分:0)
您需要使UI成为一个函数。闪亮的缓存是UI部分,因此它只是提取缓存的Sys.Date()
。参见https://github.com/rstudio/shiny/issues/1882
您看到的日期通常是最后一次重新启动服务器的时间。
从上面的链接复制:
打开它:
ui <- fluidPage(...)
为此:
ui <- function(req) {
fluidPage(...)
}