有没有办法在日期对象上使用format
函数,特别是类POSIXlt
,POSIXct
或Date
的对象,格式为{{ 1}}这样从这3个字段中的每个字段都剥离了前导零?
例如,我希望%Y, %m, %d
返回format(as.Date("1998-09-02"), "%Y, %m, %d")
而不是1998, 9, 2
。
答案 0 :(得分:10)
只需删除末尾的前导零:
> gsub(" 0", " ", format(as.Date("1998-09-02"), "%Y, %m, %d"))
[1] "1998, 9, 2"
使用%e获取前导空格而不是前导零。
答案 1 :(得分:2)
只需更改strftime
格式字符串即可完成此操作。但是,这取决于您的平台(Unix或Windows)。
要从以下项中删除前导零,请在每个术语前插入减号(-
)
format(as.Date("2020-06-02"), "%Y, %-m, %-d")
[1] "2020, 6, 2"
在每个所需字词前插入井号(#
)
format(as.Date("2020-06-02"), "%Y, %#m, %#d")
[1] "2020, 6, 2"
答案 2 :(得分:1)
我使用lubridate
package的year
,month
和day
功能发现了一种解决方法。在glue::glue
的帮助下,可以很容易地执行以下操作:
require(lubridate)
require(glue)
dt <- "1998-09-02"
glue("{year(dt)}, {month(dt)}, {day(dt)}")
# 1998, 9, 2
答案 3 :(得分:0)
使用gsub的更通用的解决方案,用于从%m或%d产生的日期或月份数字中删除前导零。这将删除所有不带数字的零:
gsub("(\\D)0", "\\1", format(as.Date("1998-09-02"), "%Y, %m, %d"))