2014-02-20 44 views
1

我希望一個相對簡單的問題。我試圖在R中打印出一些日期,但需要輸出爲特定格式,每天只有一個字符,比如:2013年2月10日如何在POSIXct日期格式化'日'作爲單個數字

下面是我正在嘗試的一個示例要做到:

date_time <- as.POSIXct(paste("3/02/2012", "00:10:09", sep=" "), format="%d/%m/%Y %H:%M:%S") 
print(format(date_time, "%d/%m/%Y %H:%M:%S")) 

它返回

"03/02/2012 00:10:09" 

但我想是不會有前導0,像這樣:

"3/02/2012 00:10:09" 

任何想法如何格式化這種方式?請注意,對於2位數字的日子,我仍然希望返回兩位數字,對於月份,我總是需要2位數字。

ps。是的,在澳大利亞,我們格式化了日期DD/MM/YYYY

回答

5

?strptime

‘%e’ Day of the month as decimal number (1-31), with a leading 
      space for a single-digit number. 

這樣:

gsub("^ ", "" , format(date_time, "%e/%m/%Y %H:%M:%S")) 
[1] "3/02/2012 00:10:09" 

gsub("^0", "", format(date_time, "%d/%m/%Y %H:%M:%S")) 
[1] "3/02/2012 00:10:09" 
+0

啊,太近了!年和時間之間現在沒有空間了? – jprockbelly

+0

@jprockbelly修正了正則表達式:) –

+0

我太渴望了:)現在工作很好,謝謝 – jprockbelly

1

挑剔,挑剔。不知道是否有更簡單的方法,但你可以只寫自己的格式功能:

date_time <- as.POSIXct(paste("3/02/2012", "00:10:09", sep=" "), format="%d/%m/%Y %H:%M:%S") 

format.date <- function(x, ...) { 
    tmp <- format(x, ...) 
    tmp <- sub("^[0]+", "", tmp) 
    tmp <- sub('/0','/', tmp) 
    return(tmp) 
} 

format.date(date_time, "%d/%m/%Y %H:%M:%S") 
## "3/2/2012 00:10:09"