r - 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)
任何帮助请!
解决方案
一种方法是使用formatDate
with 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')))