格式化日期/时间为字符串
在前面的章节中,我们学习了如何将字符串转换为日期和日期/时间对象。在这一节中,
将会学到相反的操作:根据特定的模板将日期和日期/时间对象转换回字符串。
一旦创建了一个日期对象,每次打印时,它总是以标准格式表示:
my_date
## [1] "2016-02-10"
我们可以使用 as.character( )将日期转换为标准形式的字符串:
date_text <- as.character(my_date)
date_text
## [1] "2016-02-10"
其结果看起来和 my_date 一样,但是这个字符串只是一个纯文本,不再支持日期计算:
date_text +1
## Error in date_text + 1: 二进列运算符中有非数值参数
有时候,我们需要以非标准的方式格式化日期:
as.character(my_date, format = "%Y.%m.%d")
## [1] "2016.02.10"
事实上,as.character( )在后台直接调用了 format( )。我们可以直接通过
format( )得到相同的结果,而且通常也推荐这样做:
format(my_date, "%Y.%m.%d")
## [1] "2016.02.10"
相同的操作也适用于日期/时间对象。我们可以进一步定制模板,将更多文本而不只是
占位符包括进来:
my_time
## [1] "2016-02-10 10:25:31 CST"
format(my_time, "date: %Y-%m-%d, time: %H:%M:%S")
## [1] "date: 2016-02-10, time: 10:25:31"
小技巧:
占位符的格式远比我们提到的多。想要获取更多信息可
以输入?strptime 阅读相关文档。
有很多扩展包可以使我们更加简便地处理日期和时间。推荐 lubridate 扩展包
(https://cran.r-project.org/web/packages/lubridate),因为它提供了几乎所有处理日期和时间对
象需要的函数。