首页 > 解决方案 > as.Date 函数不起作用 n 数据表

问题描述

我正在使用一个数据输入屏幕,其中有三个 dateInput。我想以“月份,YYYY”格式显示月份。我使用了许多不同的格式,但无法达到预期的效果。我需要以下格式的以下列: 1. 月份:2019 年 1 月 2. 截止日期:dd-mm-yyyy 3. 实际日期:dd-mm-yyyy

如何做到这一点?

我在下面附上我的代码

fields <- c("Financial_Year","Quarter","Month", "Due_Date","Actual_Date")
library(shiny)
library(lubridate)
library(DT)

ui<-fluidPage(
  titlePanel("Monthly Civil Accounts"),
  sidebarLayout(
    sidebarPanel(width=3,
                 textInput("Financial_Year","Financial Year"),
                 selectInput("Quarter","Quarter",c("Q1","Q2","Q3","Q4")),
                 dateInput("Month","Month of Account", format="MM, yyyy"),
                 dateInput("Due_Date", "Due date for submission", format="dd-mm-yyyy"),
                 dateInput("Actual_Date","Actual date of submission",format="dd-mm-yyyy"),
                 actionButton("save","Add",icon=icon("plus-square")),
                 actionButton("reset","Delete",icon=icon("minus-square"))
    ),
    mainPanel(
      mainPanel(
        DT::dataTableOutput("responses1", width = 600), tags$hr()
      ))))

server<-function(input,output,session){
  saveData <- function(data) {
    data <- data.frame(
      Financial_Year=data["Financial_Year"],
      Quarter=data["Quarter"],
      Month=as.Date(as.numeric(data[["Month"]]),"1970-01-01"),
      Due_Date=as.Date(as.numeric(data[["Due_Date"]]),"1970-01-01"),
      Actual_Date=as.Date(as.numeric(data[["Actual_Date"]]),"1970-01-01")
    )
    if (exists("responses")) {
      responses <<- rbind(responses, data)
    } else {
      responses <<- data
    }
  }
  mcaloadData <- function() {
    if (exists("responses")) {
      responses
    }
  }
  formData <- reactive({
    data <- sapply(fields, function(x) input[[x]])
    data
    #print(data)
  })
  observeEvent(input$save, {
    saveData(formData())
  })

  output$responses1 <- DT::renderDataTable({
    input$save
    input$reset
    #mcadata<-transform(mcaloadData(), Delay=as.numeric((mcaloadData()$Actual_Date)-(mcaloadData()$Due_Date)))
    datatable(mcaloadData(),rownames=FALSE,options = list(ordering=FALSE, searching=FALSE,paging=FALSE,pageLength=FALSE,info=FALSE))
  })
}
shinyApp(ui,server)

任何帮助请!

标签: rdatedatatableshiny

解决方案


一种方法是使用formatDatewith datatable。我包括in-TG了印度 Telangana 的语言环境。我希望这可能会有所帮助。

datatable(mcaloadData(),rownames=FALSE,options = list(ordering=FALSE, searching=FALSE,paging=FALSE,pageLength=FALSE,info=FALSE)) %>%
      formatDate(c('Actual_Date', 'Due_Date'), method = 'toLocaleDateString', params = list('in-TG')) %>% 
      formatDate('Month', method = 'toLocaleDateString', params = list('in-TG', list(year = 'numeric', month = 'long')))

推荐阅读