首页 > 解决方案 > 将选定的日期和时间合并为闪亮的日期时间变量

问题描述

我有以下代码应该询问日期和时间,然后将它们合并在一起以获得日期时间变量,如果可能的话 POSIXct。

library(shiny)
library(shinyTime)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(

dateInput(inputId='dateRange1',
      label = 'Enter initial date: yyyy-mm-dd'),

timeInput("time_input1", "Enter time of the initial day", value =  strptime("00:00:00", "%T"))
),

mainPanel(
  textOutput("time_output1")
)))
################
server <- function(input, output) {
vals <- reactiveValues()
observe({
vals$initial_date <-paste(as.character(input$dateRange1),strftime(input$time_input1, "%T") , collapse = " - ")
})
output$time_output1 <- renderText(vals$initial_date)
}

shinyApp(ui, server)

我希望 vals$initial_date 的类是“POSIXct”“POSIXt”,但我不管理。我需要对日期和时间进行操作。我尝试了很多东西,其中包括我用过的:

vals$initial_date<- strptime(vals$initial_date, "%d-%m-%Y %H:%M:%S")

vals$initial_date<- as.POSIXct(vals$initial_date, "%d-%m-%Y %H:%M:%S")

在'观察'里面,但它没有工作。有人可以告诉我我的问题在哪里吗?

谢谢!

标签: rshiny

解决方案


时间输入已经有日期组件,如果你愿意,我们可以去掉它。请注意,我已添加inherits测试以查看 中的对象reactiveValues()是否为 type POSIXct。我还添加了一些renderText条件,以便在渲染 00:00:00 时显示完整的日期时间,而不是仅显示日期

library(shiny)
library(shinyTime)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      dateInput(inputId='dateRange1',label = 'Enter initial date: yyyy-mm-dd ', value = Sys.Date()),
      timeInput("time_input1", "Enter time of the initial day", value =  strptime("00:00:00", "%T"))

    ),
    mainPanel(
      textOutput("time_output1")
    )))

################
server <- function(input, output) {
  vals <- reactiveValues()

  observe({
    testdatetime <- paste(input$dateRange1,strftime(input$time_input1, format="%H:%M:%S"))
    testdatetime <- as.POSIXct(testdatetime, format="%Y-%m-%d %H:%M:%S",tz= "UTC")
    vals$initial_date <- testdatetime

    # Check if the Time is a POSIXct object
    test <- inherits(testdatetime, "POSIXct")
    print(test)
  })

  output$time_output1 <- renderText({

    value <- as.character(vals$initial_date)
    if(nchar(value) == nchar(as.character(Sys.Date()))){
      value <- paste(value,"00:00:00 ")
    }
    value
  })
}

shinyApp(ui, server)

推荐阅读