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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。