在R中格式化日期而不带前导零

时间:2014-08-19 15:20:01

标签: r date zero-pad

有没有办法在日期对象上使用format函数,特别是类POSIXltPOSIXctDate的对象,格式为{{ 1}}这样从这3个字段中的每个字段都剥离了前导零?

例如,我希望%Y, %m, %d返回format(as.Date("1998-09-02"), "%Y, %m, %d")而不是1998, 9, 2

4 个答案:

答案 0 :(得分:10)

只需删除末尾的前导零:

> gsub(" 0", " ", format(as.Date("1998-09-02"), "%Y, %m, %d"))
[1] "1998, 9, 2"

使用%e获取前导空格而不是前导零。

答案 1 :(得分:2)

只需更改strftime格式字符串即可完成此操作。但是,这取决于您的平台(Unix或Windows)。

Unix

要从以下项中删除前导零,请在每个术语前插入减号(-

format(as.Date("2020-06-02"), "%Y, %-m, %-d")
[1] "2020, 6, 2"

Windows

在每个所需字词前插入井号(#

format(as.Date("2020-06-02"), "%Y, %#m, %#d")
[1] "2020, 6, 2"

答案 2 :(得分:1)

我使用lubridate packageyearmonthday功能发现了一种解决方法。在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"))