gpt4 book ai didi

r - Sys.Date() 在 Shiny 的应用程序中显示错误的日期

转载 作者:行者123 更新时间:2023-12-04 09:10:22 25 4
gpt4 key购买 nike

此代码应将昨天显示为开始日期,并以今天作为最后一个选项结束。
它工作了几个月,我没有改变任何东西,但自从几周以来我得到了错误的日期。

如果我在本地运行此代码、在我的 ubuntu 服务器上运行 rstudio 或连接到运行此代码的 Shiny 服务器,它会在前天向我显示。

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() 它会在本地和我的服务器上为我提供正确的日期。仅当我将其作为 Shiny 的应用程序运行时才会出现此问题。

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

最重要的是,在 Shiny 的服务器上运行的应用程序向我的一些同事显示了正确的时间/日期,而一些同事得到了相同的错误日期。

为了隔离错误,因为我在 renderText 中有正确的日期,所以我的桌面触发的 dateRangeInput 对象一定有问题?!

2015 年 10 月 29 日更新

我没有更改代码/服务器上的任何内容,但它现在显示了正确的日期,不知道为什么,但它从今天开始就可以工作了。如果有人知道为什么会发生这种情况,我真的很感激知道。

最佳答案

你需要让你的 UI 成为一个函数。 Shiny 的缓存是 UI 部分,所以它只是拉缓存 Sys.Date() .见 https://github.com/rstudio/shiny/issues/1882

您看到的日期通常是您的服务器上次重新启动的时间。

从上面的链接复制:

转这个:

ui <- fluidPage(...)

进入这个:
ui <- function(req) {
fluidPage(...)
}

关于r - Sys.Date() 在 Shiny 的应用程序中显示错误的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33237943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com