R Language
日時クラス(POSIXctおよびPOSIXlt)
サーチ…
前書き
Rには、POSIXctとPOSIXltという2つの日付時刻クラスがあり?DateTimeClasses
。「 ?DateTimeClasses
」を参照してください。
備考
日時オブジェクトの書式設定と印刷
# test date-time object options(digits.secs = 3) d = as.POSIXct("2016-08-30 14:18:30.58", tz = "UTC") format(d,"%S") # 00-61 Second as integer ## [1] "30" format(d,"%OS") # 00-60.99… Second as fractional ## [1] "30.579" format(d,"%M") # 00-59 Minute ## [1] "18" format(d,"%H") # 00-23 Hours ## [1] "14" format(d,"%I") # 01-12 Hours ## [1] "02" format(d,"%p") # AM/PM Indicator ## [1] "PM" format(d,"%z") # Signed offset ## [1] "+0000" format(d,"%Z") # Time Zone Abbreviation ## [1] "UTC"
フォーマット文字列の詳細や他のフォーマットについては?strptime
を参照してください。
文字列を日時オブジェクトに解析する
文字列をPOSIXctとPOSIXltに解析する関数は、同様のパラメータを取り、同様の結果を返しますが、その日時の格納方法には違いがあります。 「備考」を参照してください。
as.POSIXct("11:38", # time string
format = "%H:%M") # formatting string
## [1] "2016-07-21 11:38:00 CDT"
strptime("11:38", # identical, but makes a POSIXlt object
format = "%H:%M")
## [1] "2016-07-21 11:38:00 CDT"
as.POSIXct("11 AM",
format = "%I %p")
## [1] "2016-07-21 11:00:00 CDT"
日付とタイムゾーンは帰属されることに注意してください。
as.POSIXct("11:38:22", # time string without timezone
format = "%H:%M:%S",
tz = "America/New_York") # set time zone
## [1] "2016-07-21 11:38:22 EDT"
as.POSIXct("2016-07-21 00:00:00",
format = "%F %T") # shortcut tokens for "%Y-%m-%d" and "%H:%M:%S"
ここでの書式文字列の詳細は?strptime
を参照してください。
ノート
不足している要素
- 日付要素が指定されていない場合は、現在の日付からの日付要素が使用されます。
- time要素が指定されていない場合は、深夜から0秒が使用されます。
- stringまたは
tz
パラメータのいずれかにタイムゾーンが指定されていない場合は、ローカルタイムゾーンが使用されます。
時間帯
- 受け入れられる
tz
値は場所によって異なります。-
CST
は"CST6CDT"
または"America/Chicago"
与えられます"America/Chicago"
-
- サポートされている場所とタイムゾーンでは、
- R:
OlsonNames()
- あるいは、R:
system("cat $R_HOME/share/zoneinfo/zone.tab")
で試してください。
- R:
- これらの場所は、 IANA(Internet Assigned Numbers Authority)
日時演算
時間を追加/減算するには、時間を秒単位で保存するPOSIXctを使用します
## adding/subtracting times - 60 seconds
as.POSIXct("2016-01-01") + 60
# [1] "2016-01-01 00:01:00 AEDT"
## adding 3 hours, 14 minutes, 15 seconds
as.POSIXct("2016-01-01") + ( (3 * 60 * 60) + (14 * 60) + 15)
# [1] "2016-01-01 03:14:15 AEDT"
より正式には、 as.difftime
を使用して、日付またはdatetimeオブジェクトに追加する期間を指定できます。例えば:
as.POSIXct("2016-01-01") +
as.difftime(3, units="hours") +
as.difftime(14, units="mins") +
as.difftime(15, units="secs")
# [1] "2016-01-01 03:14:15 AEDT"
日付/時刻の違いを見つけるには、 difftime()
を秒、分、時間、日または週の差異に使用します。
# using POSIXct objects
difftime(
as.POSIXct("2016-01-01 12:00:00"),
as.POSIXct("2016-01-01 11:59:59"),
unit = "secs")
# Time difference of 1 secs
seq.POSIXt()
または単にseq
使用して、日付/時刻のシーケンスを生成します。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow