在R语言中如何获取Date类对象的存储格式?
问题描述
假设我想要以「日-月-不含世纪的年」格式存储日期「2003年2月1日」,执行了如下R代码:
date <- as.Date("01-02-03", format = "%d-%m-%y")
之后我忘记了该日期的输入格式,执行date命令后输出为:
date [1] "2003-02-01"
我可以通过format(date, "%d")判断01是日,但有没有方法直接获取该日期的输入存储格式?
解答
首先要明确:R中的as.Date对象本身不会保存你当初输入时指定的format参数。它内部是以自1970-01-01以来的天数数值存储的,你执行date看到的"2003-02-01"只是R默认采用的ISO 8601标准显示格式,和你当初的输入格式无关。
没有直接获取输入格式的内置方法,但可以通过以下方式处理:
- 主动记录格式:如果是在脚本中处理日期,建议把输入格式单独存在变量里,比如:
之后需要确认格式时直接调用date_format <- "%d-%m-%y" date <- as.Date("01-02-03", format = date_format)date_format即可。 - 验证日期各部分:如果只是要确认日、月、年对应的数值,可以用
format()函数提取对应部分:# 提取日 format(date, "%d") # 提取月 format(date, "%m") # 提取完整年份 format(date, "%Y") - 回溯读取逻辑:如果日期是从外部文件读取的,检查读取数据时的代码,确认当时指定的
format参数。
内容的提问来源于stack exchange,提问作者Zweifler
相关产品推荐
相关产品推荐

