【问题标题】:Validate daterangeinput to prevent end date is located before start date验证 daterangeinput 以防止结束日期位于开始日期之前
【发布时间】:2020-05-27 00:42:24
【问题描述】:

我使用 dateRangeInput 并希望防止结束日期早于开始日期。为此,我想使用 updateDateRangeInput

以下代码确保结束日期比开始日期晚 1 天。但是使用我的解决方案,之后无法修改结束日期。它总是跳到开始日期的后一天。

## Only run examples in interactive R sessions
if (interactive()) {

  ui <- fluidPage(
    dateRangeInput("Input_Dates", label = "Date", format = "DD dd-mm-yyyy", language = "en",
                                                  weekstart = 1, start = NULL, end = Sys.Date()+1)
  )

  shinyApp(ui, server = function(input, output, session) {

    observeEvent(input$Input_Dates[1],{

      start_date <- input$Input_Dates[1]
      end_date <- start_date + 1

      updateDateRangeInput(session, "Input_Dates",
                           start = start_date,
                           end = end_date)
    })  
  })
}

如何实现 dateRangeInput 中的结束日期自动更新到开始日期后的第二天并且我可以在之后修改结束日期?

【问题讨论】:

    标签: r shiny date-range


    【解决方案1】:

    这样的?

    library(shiny)
    ## Only run examples in interactive R sessions
    maxdate <- Sys.Date()+1
    
    if (interactive()) {
    
      ui <- fluidPage(
        dateRangeInput("Input_Dates", label = "Date", format = "DD dd-mm-yyyy", language = "en",
                       weekstart = 1, start = NULL, end = maxdate,max = maxdate)
      )
    
      shinyApp(ui, server = function(input, output, session) {
    
        observeEvent(input$Input_Dates[1],{
    
          start_date <- input$Input_Dates[1]
          end_date <- start_date + 1
          req(end_date <= maxdate)
    
          updateDateRangeInput(session, "Input_Dates",start = start_date,end = end_date)
        })  
      })
    }
    

    【讨论】:

    • 当我选择 2020-02-10 作为开始日期时,它会将结束日期更新为 2020-02-11,这正是我想要的。但我还希望,我有可能在之后将结束日期更改为例如2020-02-15。在您的代码中(就像在我的代码中一样),它固定为 2020-02-11。
    猜你喜欢
    • 2023-03-19
    • 2017-09-22
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    相关资源
    最近更新 更多