将所选日期和时间合并为闪亮

时间:2018-06-13 16:22:05

标签: r shiny

我有以下代码,应该询问日期和时间,然后将它们合并在一起以获取日期时间变量,如果可能的话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")

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

谢谢!

1 个答案:

答案 0 :(得分:0)

时间输入已经有了日期组件,如果你愿意我们可以摆脱它。请注意,我添加了inherits测试,以查看reactiveValues()中的对象是否为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)