我希望这是一个相对简单的问题。我正在尝试在R中打印出一些日期,但需要输出为特定格式,每天使用一个字符,例如:2013年2月10日
以下是我正在尝试做的一个例子:
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
答案 0 :(得分:6)
来自?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"
答案 1 :(得分: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"
答案 2 :(得分:0)
从Jake的答案开始,但没有正则表达式,您可以使用INSERT INTO public.invoice_output (id, title, description)
SELECT id, title, description FROM public.invoice_input
ON CONFLICT (id) DO NOTHING;
来删除stringr::str_squish
使用的前导空格。
%e