R 如何格式化&x27;第'天;作为POSIXct日期中的单个数字

R 如何格式化&x27;第'天;作为POSIXct日期中的单个数字,r,date,formatting,posixct,R,Date,Formatting,Posixct,我希望这是一个相对简单的问题。我正在尝试用R打印一些日期,但需要以特定的格式输出,用一个字符表示日期,如:2/10/2013 下面是我尝试做的一个例子: 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")) 但我想要的是不要有前导0,就像这样: "3/02/2012

我希望这是一个相对简单的问题。我正在尝试用R打印一些日期,但需要以特定的格式输出,用一个字符表示日期,如:2/10/2013

下面是我尝试做的一个例子:

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"))
但我想要的是不要有前导0,就像这样:

"3/02/2012 00:10:09"
你知道怎么用这种方式格式化吗?请注意,对于两位数的天数,我仍然希望返回两位数,对于月份,我希望始终返回两位数


注:是的,在澳大利亚,我们将日期dd/mm/yyyy格式化为
?strtime

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


挑剔,挑剔。不确定是否有更简单的方法,但您可以编写自己的格式函数:

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"

date\u time继续Jake的答案,但没有正则表达式,您可以使用
stringr::str\u squish
删除
%e
使用的前导空格


str\u squish(格式(日期时间,%e/%m/%Y%H:%m:%S))

Ahhh,太接近了!现在年份和时间之间没有空格了?@jprockbelly修正了正则表达式:)
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"
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"