如何在R Shiny的DataTables中设置24小时制时间格式
解决DT中
toLocaleString显示12小时制的问题 我太懂这种被日期时间格式折腾的痛苦了!之前用toLocaleString去掉ISO时间里的'T'和'Z',结果又碰到12小时制的坑,确实头疼。
问题根源在于toLocaleString的默认行为——它会遵循浏览器的区域设置,Chrome里如果你的系统区域默认是12小时制,就自动显示AM/PM。不过我们可以通过传入配置选项强制改成24小时制。
只需要在formatDate里添加params参数,指定hour12: false即可,修改后的完整代码如下:
library(shiny) library(DT) data <- structure( list( DATUM = structure( c(1490738402, 1490738436, 1490738440, 1490738444, 1490738447, 1490738451, 1490738455, 1490738459, 1490738463, 1490738467), class = c("POSIXct", "POSIXt"), tzone = "CEST" ), NUMMER = c(19, 20, 21, 22, 23, 24, 25, 26, 27, 28) ), .Names = c("DATUM", "NUMMER"), row.names = c(NA, 10L), class = "data.frame" ) tz <- Sys.timezone() data$DATUM <- as.POSIXct(as.character(data$DATUM), tz=tz) ui <- fluidPage( dataTableOutput("tab") ) server <- function(input, output, session) { output$tab <- DT::renderDataTable({ datatable(data, rownames=TRUE, filter="top", class = 'cell-border stripe') %>% # 关键修改:添加params参数指定24小时制 formatDate( 1, method = 'toLocaleString', params = list(options = list(hour12 = FALSE)) ) }) } shinyApp(ui, server)
简单说明
toLocaleString支持传入配置选项,其中hour12: false会强制启用24小时制显示- 这个配置不会破坏原本去掉'T'和'Z'的功能,依然能把ISO格式时间转成友好的本地格式
运行后你的DataTables就会显示预期的24小时制时间啦!
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

