as.Date
位于 base
包(package)。 说明
在字符表示和表示日历日期的 "Date"
类对象之间进行转换的函数。
用法
as.Date(x, ...)
## S3 method for class 'character'
as.Date(x, format, tryFormats = c("%Y-%m-%d", "%Y/%m/%d"),
optional = FALSE, ...)
## S3 method for class 'numeric'
as.Date(x, origin, ...)
## S3 method for class 'POSIXct'
as.Date(x, tz = "UTC", ...)
## S3 method for class 'Date'
format(x, ...)
## S3 method for class 'Date'
as.character(x, ...)
参数
x |
要转换的对象。 |
format |
|
tryFormats |
如果未指定 |
optional |
|
origin |
|
tz |
时区名称。 |
... |
从其他方法传递或向其他方法传递的更多参数,包括用于 |
细节
通常的向量回收规则适用于 x
和 format
,因此答案的长度将是向量中较长者的长度。
在适当且可用的情况下使用 Locale-specific 与字符串之间的转换。这会影响日期和月份的名称。
as.Date
方法接受字符串、因子、逻辑NA
和类的对象"POSIXlt"
和"POSIXct"
。 (最后一个通过忽略指定时区时间表示中的午夜之后的时间来转换为天,默认为 UTC。)也是类的对象"date"
(来自包装日期) 和"dates"
(来自包装计时)。根据指定格式的需要来处理字符串:忽略任何尾随字符。
as.Date
将接受数字数据(自纪元以来的天数),因为R4.3.0还时origin
未提供。
format
和 as.character
方法忽略日期的任何小数部分。
值
format
和 as.character
方法返回表示日期的字符向量。 NA
日期返回为 NA_character_
。
as.Date
方法返回 "Date"
类的对象。
从其他系统转换
大多数系统在内部将日期记录为自某个来源以来的天数,但这充满了问题,包括
-
起始日是第 0 天还是第 1 天?正如“示例”所示,Excel 设法为其两个日期系统使用这两种选择。
-
如果起源足够早,设计者可能会表现出他们对日历系统的无知。例如,Excel 的设计者认为 1900 年是闰年(声称复制了早期 DOS 电子表格中的错误),Matlab 的设计者选择了不存在的日期“January 0, 0000”(没有这样的一天),没有指定日历。 (ISO 8601:2004 中使用的“公历”日历中有这样一个年份,但这确实表明它只能在信息交换双方同意的情况下用于 1582 年之前的年份。)
唯一安全的程序是检查其他系统值的已知日期:互联网上的报告(包括R-help)错误多于正确。
注意
默认格式遵循 ISO 8601 国际标准的规则,将一天表示为 "2001-02-03"
。
如果日期字符串未完整指定日期,则返回的答案可能是系统特定的。最常见的行为是假设缺失的年、月或日就是当前的年、月或日。如果指定的日期不正确,可靠的实现将给出错误,并且日期将报告为NA
。不幸的是一些常见的实现(例如‘glibc’)是不可靠的并且猜测其预期含义。
1CE(又名 1AD)之前的几年可能无法正确处理。
例子
## locale-specific version of the date
format(Sys.Date(), "%a %b %d")
## read in date info in format 'ddmmmyyyy'
## This will give NA(s) in some locales; setting the C locale
## as in the commented lines will overcome this on most systems.
## lct <- Sys.getlocale("LC_TIME"); Sys.setlocale("LC_TIME", "C")
x <- c("1jan1960", "2jan1960", "31mar1960", "30jul1960")
z <- as.Date(x, "%d%b%Y")
## Sys.setlocale("LC_TIME", lct)
z
## read in date/time info in format 'm/d/y'
dates <- c("02/27/92", "02/27/92", "01/14/92", "02/28/92", "02/01/92")
as.Date(dates, "%m/%d/%y")
## date given as number of days since 1900-01-01 (a date in 1989)
as.Date(32768, origin = "1900-01-01")
## Excel is said to use 1900-01-01 as day 1 (Windows default) or
## 1904-01-01 as day 0 (Mac default), but this is complicated by Excel
## incorrectly treating 1900 as a leap year.
## So for dates (post-1901) from Windows Excel
as.Date(35981, origin = "1899-12-30") # 1998-07-05
## and Mac Excel
as.Date(34519, origin = "1904-01-01") # 1998-07-05
## (these values come from http://support.microsoft.com/kb/214330)
## Experiment shows that Matlab's origin is 719529 days before ours,
## (it takes the non-existent 0000-01-01 as day 1)
## so Matlab day 734373 can be imported as
as.Date(734373) - 719529 # 2010-08-23
## (value from
## http://www.mathworks.de/de/help/matlab/matlab_prog/represent-date-and-times-in-MATLAB.html)
## Time zone effect
z <- ISOdate(2010, 04, 13, c(0,12)) # midnight and midday UTC
as.Date(z) # in UTC
## these time zone names are common
as.Date(z, tz = "NZ")
as.Date(z, tz = "HST") # Hawaii
参考
International Organization for Standardization (2004, 1988, 1997, ...) ISO 8601. Data elements and interchange formats - Information interchange - Representation of dates and times. For links to versions available on-line see (at the time of writing) https://www.qsl.net/g1smd/isopdf.htm.
也可以看看
Date了解日期类的详细信息; locales
查询或设置区域设置。
您的系统的帮助页面strftime
和strptime
查看如何指定它们的格式。 Windows 用户将找不到以下帮助页面strptime
:基于‘的代码glibc使用(经过更正),因此支持此处说明的所有格式说明符,但在任何区域设置中都没有替代的数字表示形式或纪元。
相关用法
- R as.POSIX* 日期时间转换函数
- R as.environment 强制环境对象
- R as.function 将对象转换为函数
- R as.data.frame 强制数据帧
- R assignOps 赋值运算符
- R asplit 按边距分割数组/矩阵
- R assign 为名称分配值
- R apply 在数组边距上应用函数
- R agrep 近似字符串匹配(模糊匹配)
- R append 向量合并
- R attributes 对象属性列表
- R abbreviate 缩写字符串
- R all.equal 测试两个对象是否(几乎)相等
- R aperm 数组转置
- R args 函数的参数列表
- R attr 对象属性
- R array2DF 将数组转换为 DataFrame
- R autoload 按需加载包
- R attach 将一组 R 对象附加到搜索路径
- R all.names 查找表达式中的所有名称
- R any 有些值是真的吗?
- R array 多路阵列
- R all 所有的值都是真的吗?
- R file.path 构造文件路径
- R grep 模式匹配和替换
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Date Conversion Functions to and from Character。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。