我有以下代码,应该询问日期和时间,然后将它们合并在一起以获取日期时间变量,如果可能的话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")
在'观察'里面,但它没有用。 有人可以告诉我我的问题在哪里吗?
谢谢!
答案 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)