如何从 rShiny dateInput 访问日期?

How do I access the date from an rShiny dateInput?

我正在尝试编写一个输入页面,该页面获取某个部分最后一次培训的日期,然后计算该培训的货币(自那以后多少天),但我似乎无法从dateInput 元素。我目前正试图让它打印出来,但它让我望而却步。有什么我想念的吗,或者我怎样才能让它发挥作用?我已经注释掉了(希望)计算日期间隔的代码,因为我还没有确定日期来解决这个问题。如果您在那里看到问题,我也将不胜感激。

谢谢!

library(shiny)

ui <- fluidPage(
  tags$h3("Section Training"),
  dateInput("section_Last_Training", 
            "When was your last training course?",
            daysofweekdisabled = c(0, 6),
            max = Sys.Date()
            ),
)

server <- function(input, output, session) {
  section_Last_Training <- reactive({
    # dateGap = as.character(difftime(Sys.time(), input$section_Last_Training, units = "days"))
    print(input$section_Last_Training)
  })
}

shinyApp(ui, server)

它正在工作,只需确保 reactive 中的最后一个值是您要分配给 reactive 的值。你可以打印,但在你的差距计算之前做。另一件事是 reactive 被“懒惰地”评估。这意味着如果没有下游反应需要它,它不会被计算。所以你需要添加一些需要这个 reactive 的事件才能让它工作。请参阅下面的代码。

library(shiny)

ui <- fluidPage(
    tags$h3("Section Training"),
    dateInput("section_Last_Training", 
              "When was your last training course?",
              daysofweekdisabled = c(0, 6),
              max = Sys.Date()
    ),
)

server <- function(input, output, session) {
    section_Last_Training <- reactive({
        print(input$section_Last_Training)
        as.character(difftime(Sys.time(), input$section_Last_Training, units = "days"))
    })
    observe(print(section_Last_Training()))
}

shinyApp(ui, server)