郵票就像 format()
,但基於 human-friendly 模板,例如“2002 年 9 月上午 10 點錄製”或“會議,2000 年 5 月 1 日星期日晚上 10:20”。
用法
stamp(
x,
orders = lubridate_formats,
locale = Sys.getlocale("LC_TIME"),
quiet = FALSE,
exact = FALSE
)
stamp_date(x, locale = Sys.getlocale("LC_TIME"), quiet = FALSE)
stamp_time(x, locale = Sys.getlocale("LC_TIME"), quiet = FALSE)
參數
- x
-
模板的字符向量。
- orders
-
順序是可用於消除歧義的格式化字符序列。例如"ymd hms"、"aym" 等。有關可用格式的列表,請參閱
guess_formats()
。 - locale
-
x
編碼的區域設置。在 Linux-like 係統上,在終端中使用locale -a
列出可用的區域設置。 - quiet
-
是否輸出信息性消息。
- exact
-
合乎邏輯的。如果
TRUE
,則orders
參數將被解釋為精確的base::strptime()
格式,並且不執行格式猜測。
細節
stamp()
主要是一個標記函數日期時間模板,盡管它可以正確處理所有日期和時間格式,隻要它們是明確的。 stamp_date()
和 stamp_time()
是日期和時間 (MHS) 的專用標記。當輸入模板明確並且匹配時間和日期格式時,這些函數可能很有用。
Lubridate 努力猜測格式,但通常給定的格式可以用多種方式解釋。處理此類情況的一種方法是提供明確的格式,例如 22/05/81,而不是 d/m/y 格式的 10/05/81。另一種方法是使用更專門的 stamp_date
和 stamp_time
。核心函數 stamp()
優先考慮較長的日期時間格式。
如果x
是值的向量潤滑將選擇"fits"的格式x
最好的。請注意,首選較長的格式。如果您有“22:23:00 PM”,則 "HMSp" 格式將優先考慮較短的 "HMS" 順序,該順序也適合提供的字符串。
最後,您可以直接將所需的格式順序作為 orders
參數給出。
例子
D <- ymd("2010-04-05") - days(1:5)
stamp("March 1, 1999")(D)
#> Multiple formats matched: "%Om %d, %Y"(1), "March %Om, %Y"(1), "%B %d, %Y"(1), "March %m, %Y"(1)
#> Using: "%B %d, %Y"
#> [1] "April 04, 2010" "April 03, 2010" "April 02, 2010" "April 01, 2010"
#> [5] "March 31, 2010"
sf <- stamp("Created on Sunday, Jan 1, 1999 3:34 pm")
#> Multiple formats matched: "Created on %A, %b %d, %Y %I:%M %p"(1), "Created on Sunday, %b %d, %Y %I:%M %p"(1), "Created on %A, %Om %d, %Y %I:%M %p"(0), "Created on Sunday, %Om %d, %Y %I:%M %p"(0)
#> Using: "Created on %A, %b %d, %Y %I:%M %p"
sf(D)
#> [1] "Created on Sunday, Apr 04, 2010 12:00 AM"
#> [2] "Created on Saturday, Apr 03, 2010 12:00 AM"
#> [3] "Created on Friday, Apr 02, 2010 12:00 AM"
#> [4] "Created on Thursday, Apr 01, 2010 12:00 AM"
#> [5] "Created on Wednesday, Mar 31, 2010 12:00 AM"
stamp("Jan 01")(D)
#> Multiple formats matched: "%Om %y"(1), "%Om %d"(1), "Jan %Om"(1), "%b %d"(1), "Jan %H"(1), "Jan %m"(1), "Jan %y"(1), "%b %y"(0)
#> Using: "%Om %y"
#> [1] "04 10" "04 10" "04 10" "04 10" "03 10"
stamp("Sunday, May 1, 2000", locale = "C")(D)
#> Multiple formats matched: "%A, %b %d, %Y"(1), "Sunday, %Om %d, %Y"(1), "Sunday, May %Om, %Y"(1), "Sunday, %b %d, %Y"(1), "Sunday, May %m, %Y"(1), "%A, %Om %d, %Y"(0), "%A, May %Om, %Y"(0), "%A, May %m, %Y"(0)
#> Using: "%A, %b %d, %Y"
#> [1] "Sunday, Apr 04, 2010" "Saturday, Apr 03, 2010"
#> [3] "Friday, Apr 02, 2010" "Thursday, Apr 01, 2010"
#> [5] "Wednesday, Mar 31, 2010"
stamp("Sun Aug 5")(D) #=> "Sun Aug 04" "Sat Aug 04" "Fri Aug 04" "Thu Aug 04" "Wed Aug 03"
#> Multiple formats matched: "%a %b %d"(1), "%a Aug %H"(1), "Sun %Om %d"(1), "Sun Aug %Om"(1), "Sun %b %d"(1), "Sun Aug %H"(1), "Sun Aug %m"(1), "%a %Om %d"(0), "%a Aug %Om"(0), "%a Aug %m"(0)
#> Using: "%a %b %d"
#> [1] "Sun Apr 04" "Sat Apr 03" "Fri Apr 02" "Thu Apr 01" "Wed Mar 31"
stamp("12/31/99")(D) #=> "06/09/11"
#> Multiple formats matched: "%Om/%d/%y"(1), "%m/%d/%y"(1)
#> Using: "%Om/%d/%y"
#> [1] "04/04/10" "04/03/10" "04/02/10" "04/01/10" "03/31/10"
stamp("Sunday, May 1, 2000 22:10", locale = "C")(D)
#> Multiple formats matched: "%A, May %Om, %Y %d:%H"(1), "%A, %b %d, %Y %H:%M"(1), "%A, May %m, %Y %d:%H"(1), "Sunday, %Om %d, %Y %H:%M"(1), "Sunday, May %Om, %Y %d:%H"(1), "Sunday, %b %d, %Y %H:%M"(1), "Sunday, May %m, %Y %d:%H"(1), "%A, %Om %d, %Y %H:%M"(0)
#> Using: "%A, %b %d, %Y %H:%M"
#> [1] "Sunday, Apr 04, 2010 00:00" "Saturday, Apr 03, 2010 00:00"
#> [3] "Friday, Apr 02, 2010 00:00" "Thursday, Apr 01, 2010 00:00"
#> [5] "Wednesday, Mar 31, 2010 00:00"
stamp("2013-01-01T06:00:00Z")(D)
#> Multiple formats matched: "%Y-%Om-%dT%H:%M:%S%Ou"(1), "%Y-%Om-%dT%H:%M:%SZ"(1), "%Y-%d-%OmT%H:%M:%SZ"(1), "%Y-%m-%dT%H:%M:%S%Ou"(1), "%Y-%m-%dT%H:%M:%SZ"(1), "%Y-%d-%mT%H:%M:%SZ"(1)
#> Using: "%Y-%Om-%dT%H:%M:%S%Ou"
#> [1] "2010-04-04T00:00:00Z" "2010-04-03T00:00:00Z" "2010-04-02T00:00:00Z"
#> [4] "2010-04-01T00:00:00Z" "2010-03-31T00:00:00Z"
stamp("2013-01-01T00:00:00-06")(D)
#> Multiple formats matched: "%Y-%Om-%dT%H:%M:%S%Oo"(1), "%Y-%m-%dT%H:%M:%S%Oo"(1)
#> Using: "%Y-%Om-%dT%H:%M:%S%Oo"
#> [1] "2010-04-04T00:00:00+00" "2010-04-03T00:00:00+00"
#> [3] "2010-04-02T00:00:00+00" "2010-04-01T00:00:00+00"
#> [5] "2010-03-31T00:00:00+00"
stamp("2013-01-01T00:00:00-08:00")(force_tz(D, "America/Chicago"))
#> Multiple formats matched: "%Y-%Om-%dT%H:%M:%S%OO"(1), "%Y-%m-%dT%H:%M:%S%OO"(1)
#> Using: "%Y-%Om-%dT%H:%M:%S%OO"
#> [1] "2010-04-04T00:00:00-05:00" "2010-04-03T00:00:00-05:00"
#> [3] "2010-04-02T00:00:00-05:00" "2010-04-01T00:00:00-05:00"
#> [5] "2010-03-31T00:00:00-05:00"
相關用法
- R lubridate second 獲取/設置日期時間的秒部分
- R lubridate DateTimeUpdate 更改日期對象的組成部分
- R lubridate interval 用於創建和操作 Interval 對象的實用程序
- R lubridate is.difftime x 是 difftime 對象嗎?
- R lubridate as_date 將對象轉換為日期或日期時間
- R lubridate date 獲取/設置日期時間的日期部分
- R lubridate round_date 日期時間對象的舍入、取整和取整方法
- R lubridate make_difftime 創建一個 difftime 對象。
- R lubridate is.timespan x 是時間長度嗎?
- R lubridate with_tz 獲取不同時區的日期時間
- R lubridate mplus 在日期中添加和減去月份,但不超過新月份的最後一天
- R lubridate cyclic_encoding 日期時間的循環編碼
- R lubridate as.interval 將對象更改為間隔
- R lubridate quarter 獲取日期時間的財政季度和學期
- R lubridate posix_utils 各種 POSIX 實用程序
- R lubridate date_decimal 將小數轉換為日期
- R lubridate as.duration 將對象更改為持續時間
- R lubridate hour 獲取/設置日期時間的小時部分
- R lubridate minute 獲取/設置日期時間的分鍾部分
- R lubridate month 獲取/設置日期時間的月份部分
- R lubridate duration 創建一個持續時間對象。
- R lubridate leap_year 一年是閏年嗎?
- R lubridate local_time 從日期時間向量獲取當地時間。
- R lubridate make_datetime 從數字表示高效創建日期時間
- R lubridate week 獲取/設置日期時間的周組成部分
注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Format dates and times based on human-friendly templates。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。