【问题标题】:rhandsontable wrong format date display when formatting datesrhandsontable 格式化日期时显示错误的日期格式
【发布时间】:2019-07-15 18:37:39
【问题描述】:

我有一个简单的可显示日期的闪亮应用程序,但日期显示不正确。

    library(rhandsontable)   
    library(magrittr)

    DF_na = data.frame(integer = c(NA, 2:10), 
                               logical = c(NA, rep(TRUE, 9)), 
                               character = c(NA, LETTERS[1:9]),
                               factor = c(NA, factor(letters[1:9])),
                               date = c(NA, seq(from = Sys.Date(), by = "days", 
                                                length.out = 9)),
                               stringsAsFactors = FALSE)

            DF_na$factor_ch = as.character(DF_na$factor)
            DF_na$date_ch = c(NA, as.character(seq(from = Sys.Date(), by = "days", 
                                                   length.out = 9)))

            rhandsontable(DF_na) %>%
 hot_col("date", dateFormat = "DD/MM/YYYY", type = "date")

格式显示错误。日期在我的应用程序中显示为 MM-DD-YY,但我需要是 DD-MM-YY

【问题讨论】:

    标签: r shiny rhandsontable


    【解决方案1】:

    在 R 中格式化日期:

    x <- format(seq(from = Sys.Date(), by = "days", length.out = 9), "%d/%m/%Y")
    
    DF_na = data.frame(integer = c(NA, 2:10), 
                       logical = c(NA, rep(TRUE, 9)), 
                       character = c(NA, LETTERS[1:9]),
                       factor = c(NA, factor(letters[1:9])),
                       date = as.character(c(NA,x)),
                       stringsAsFactors = FALSE)
    
    rhandsontable(DF_na) %>%
      hot_col("date", dateFormat = "DD/MM/YYYY", type = "date")
    

    【讨论】:

      【解决方案2】:

      根据这个https://github.com/jrowen/rhandsontable/issues/145 问题,您必须使用自定义日期格式,您必须执行以下操作:

      1. 将数据框日期列转换为字符
      2. 在 hot_col 规范中指定 dateFormat
      3. 使用 hot_to_r 读取 input$table 后从字符串转换回来

      修正格式的正确代码清单是:

      library(rhandsontable)   
      library(magrittr)
      
      DF_na = data.frame(integer = c(NA, 2:10), 
                         logical = c(NA, rep(TRUE, 9)), 
                         character = c(NA, LETTERS[1:9]),
                         factor = c(NA, factor(letters[1:9])),
                         date = c(NA, seq(from = Sys.Date(), by = "days", 
                                          length.out = 9)),
                         stringsAsFactors = FALSE)
      
      DF_na$factor_ch = as.character(DF_na$factor)
      DF_na$date_ch = format(as.Date(DF_na$date, origin = "1970-01-01"), "%d/%m/%y")
      
      rhandsontable(DF_na) %>%
        hot_col("date_ch", dateFormat = "DD/MM/YY", type = "date")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-02
        • 1970-01-01
        • 1970-01-01
        • 2020-01-16
        相关资源
        最近更新 更多