将选定的日期和时间合并为闪亮的日期时间变量

Posted

技术标签:

【中文标题】将选定的日期和时间合并为闪亮的日期时间变量【英文标题】:merging selected date and time as date-time variables in shiny 【发布时间】:2018-06-13 16:22:04 【问题描述】:

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

里面有'observe',但是没有用。 谁能告诉我我的问题出在哪里?

谢谢!

【问题讨论】:

你想得到什么输出?您的代码可以在我的笔记本电脑上运行。 感谢您的浏览。目前 vals$initial_date 的类是字符,我想将其转换为 POSIXct 以对其进行操作。 【参考方案1】:

时间输入已经有日期组件,如果你喜欢我们可以去掉它。请注意,我添加了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)

【讨论】:

以上是关于将选定的日期和时间合并为闪亮的日期时间变量的主要内容,如果未能解决你的问题,请参考以下文章

将 SQL 输入日期范围传递给 SHINY 中的查询

使用将日期和时间合并为单个日期时间日期类型

如何在 android 日期选择器中将特定选定日期设置为最小日期? (爪哇)

如何在 android 日期选择器中将特定选定日期设置为最小日期? [复制]

如何基于R中的2个日期时间变量合并行

将按钮的文本设置为 datepicker 上的选定日期