要約
日付だけでなく時刻も扱える Date のサブクラスです。
DateTime は deprecated とされているため、 Timeを使うことを推奨します。
簡単なつかいかた
require 'date'
a = DateTime.new(1993, 2, 24, 12, 30, 45)
b = DateTime.parse('1993-02-24T12:30:45')
b += 10
p b - a #=> 10
p b.year #=> 1993
p b.strftime('%a') #=> "Sat"
yesterday = DateTime.now - 1
目次
- 特異メソッド
- インスタンスメソッド
- 追加されるメソッド
継承しているメソッド
- Dateから継承している特異メソッド
- Dateから継承しているメソッド
-
- +
- -
- <<
- <=>
- ===
- >>
- ajd
- amjd
- asctime
- ctime
- cwday
- cweek
- cwyear
- day
- downto
- england
- friday?
- gregorian
- gregorian?
- httpdate
- italy
- jd
- julian
- julian?
- ld
- leap?
- mday
- mjd
- mon
- monday?
- month
- new_start
- next
- next_day
- next_month
- next_year
- prev_day
- prev_month
- prev_year
- rfc2822
- rfc822
- saturday?
- start
- step
- strftime
- succ
- sunday?
- thursday?
- to_s
- tuesday?
- upto
- wday
- wednesday?
- yday
- year
- Comparableから継承しているメソッド
特異メソッド
_strptime(str, format = '%FT%T%z') -> Hash[permalink][rdoc][edit]-
与えられた雛型で日時表現を解析し、その情報に基づいてハッシュを生成します。
- [PARAM]
str: - 日時をあらわす文字列
- [PARAM]
format: - 書式
require 'date' p DateTime._strptime('2001-02-03T12:13:14Z') # => {:year=>2001, :mon=>2, :mday=>3, :hour=>12, :min=>13, :sec=>14, :zone=>"Z", :offset=>0}DateTime.strptime の内部で使用されています。
[SEE_ALSO] Date._strptime, DateTime.strptime
- [PARAM]
civil(year = -4712, mon = 1, mday = 1, hour = 0, min = 0, sec = 0, offset = 0, start = Date::ITALY) -> DateTime[permalink][rdoc][edit]new(year = -4712, mon = 1, mday = 1, hour = 0, min = 0, sec = 0, offset = 0, start = Date::ITALY) -> DateTime-
暦日付に相当する日時オブジェクトを生成します。
時差の単位は日です。 1.8.6 以降では、"+0900" のような時差をあらわす文字列もつかえます。
- [PARAM]
year: - 年
- [PARAM]
mon: - 月
- [PARAM]
mday: - 日
- [PARAM]
hour: - 時
- [PARAM]
min: - 分
- [PARAM]
sec: - 秒
- [PARAM]
offset: - 時差
- [PARAM]
start: - グレゴリオ暦をつかい始めた日をあらわすユリウス日
- [EXCEPTION]
ArgumentError: - 正しくない日時
- [PARAM]
commercial(cwyear = -4712, cweek = 1, cwday = 1, hour = 0, min = 0, sec = 0, offset = 0, start = Date::ITALY) -> DateTime[permalink][rdoc][edit]-
暦週日付に相当する日時オブジェクトを生成します。
DateTime.new も参照してください。
- [PARAM]
cwyear: - 年
- [PARAM]
cweek: - 週
- [PARAM]
cwday: - 週の日 (曜日)
- [PARAM]
hour: - 時
- [PARAM]
min: - 分
- [PARAM]
sec: - 秒
- [PARAM]
offset: - 時差
- [PARAM]
start: - グレゴリオ暦をつかい始めた日をあらわすユリウス日
- [EXCEPTION]
ArgumentError: - 正しくない日時
- [PARAM]
httpdate(str = 'Mon, 01 Jan -4712 00:00:00 GMT', start = Date::ITALY) -> DateTimeRuby 1.9.3 から[permalink][rdoc][edit]-
[RFC2616] で定められた書式の日付を解析し、その情報に基づいて日付オブジェクトを生成します。
Date._httpdate も参照してください。
- [PARAM]
str: - 日付をあらわす文字列
- [PARAM]
start: - グレゴリオ暦をつかい始めた日をあらわすユリウス日
- [PARAM]
iso8601(str = '-4712-01-01T00:00:00+00:00', start = Date::ITALY) -> DateTimeRuby 1.9.3 から[permalink][rdoc][edit]-
いくつかの代表的な ISO 8601 書式の日付を解析し、その情報に基づいて日付オブジェクトを生成します。
- [PARAM]
str: - 日付をあらわす文字列
Date._iso8601 も参照してください。
- [PARAM]
str: - 日付をあらわす文字列
- [PARAM]
start: - グレゴリオ暦をつかい始めた日をあらわすユリウス日
- [PARAM]
jd(jd = 0, hour = 0, min = 0, sec = 0, offset = 0, start = Date::ITALY) -> DateTime[permalink][rdoc][edit]-
ユリウス日に相当する日時オブジェクトを生成します。
DateTime.new も参照してください。
- [PARAM]
jd: - ユリウス日
- [PARAM]
hour: - 時
- [PARAM]
min: - 分
- [PARAM]
sec: - 秒
- [PARAM]
offset: - 時差
- [PARAM]
start: - グレゴリオ暦をつかい始めた日をあらわすユリウス日
- [EXCEPTION]
ArgumentError: - 正しくない日時
- [PARAM]
jisx0301(str = '-4712-01-01T00:00:00+00:00', start = Date::ITALY) -> DateTimeRuby 1.9.3 から[permalink][rdoc][edit]-
いくつかの代表的な JIS X 0301 書式の日付を解析し、その情報に基づいて日付オブジェクトを生成します。
Date._jisx0301 も参照してください。
- [PARAM]
str: - 日付をあらわす文字列
- [PARAM]
start: - グレゴリオ暦をつかい始めた日をあらわすユリウス日
- [PARAM]
now(start = Date::ITALY) -> DateTime[permalink][rdoc][edit]-
現在の時刻に相当する日時オブジェクトを生成します。
- [PARAM]
start: - グレゴリオ暦をつかい始めた日をあらわすユリウス日
- [PARAM]
ordinal(year = -4712, yday = 1, hour = 0, min = 0, sec = 0, offset = 0, start = Date::ITALY) -> DateTime[permalink][rdoc][edit]-
年日付に相当する日時オブジェクトを生成します。
DateTime.new も参照してください。
- [PARAM]
year: - 年
- [PARAM]
yday: - 年の日
- [PARAM]
hour: - 時
- [PARAM]
min: - 分
- [PARAM]
sec: - 秒
- [PARAM]
offset: - 時差
- [PARAM]
start: - グレゴリオ暦をつかい始めた日をあらわすユリウス日
- [EXCEPTION]
ArgumentError: - 正しくない日時
- [PARAM]
parse(str = '-4712-01-01T00:00:00+00:00', complete = true, start = Date::ITALY) -> DateTime[permalink][rdoc][edit]-
与えられた日時表現を解析し、その情報に基づいて DateTime オブジェクトを生成します。
年が "00" から "99" の範囲であれば、年の下2桁表現であるとみなしこれを補います。この振舞いを抑止したい場合は、ヒントとして、complete に false を与えます。
- [PARAM]
str: - 日時をあらわす文字列
- [PARAM]
complete: - 年を補完するか
- [PARAM]
start: - グレゴリオ暦をつかい始めた日をあらわすユリウス日
- [EXCEPTION]
ArgumentError: - 正しくない日時になる組み合わせである場合に発生します。
require 'date' p DateTime.parse('2001-02-03T12:13:14Z').to_s # => "2001-02-03T12:13:14+00:00"[SEE_ALSO] Date._parse, Date.parse
- [PARAM]
rfc2822(str = 'Mon, 1 Jan -4712 00:00:00 +0000', start = Date::ITALY) -> DateTimeRuby 1.9.3 から[permalink][rdoc][edit]rfc822(str = 'Mon, 1 Jan -4712 00:00:00 +0000', start = Date::ITALY) -> DateTime-
[RFC2822] で定められた書式の日付を解析し、その情報に基づいて日付オブジェクトを生成します。
Date._rfc2822 も参照してください。
- [PARAM]
str: - 日付をあらわす文字列
- [PARAM]
start: - グレゴリオ暦をつかい始めた日をあらわすユリウス日
- [PARAM]
rfc3339(str = '-4712-01-01T00:00:00+00:00', start = Date::ITALY) -> DateTimeRuby 1.9.3 から[permalink][rdoc][edit]-
[RFC3339] 書式の日付を解析し、その情報に基づいて日付オブジェクトを生成します。
Date._rfc3339 も参照してください。
- [PARAM]
str: - 日付をあらわす文字列
- [PARAM]
start: - グレゴリオ暦をつかい始めた日をあらわすユリウス日
- [PARAM]
strptime(str = '-4712-01-01T00:00:00+00:00', format = '%FT%T%z', start = Date::ITALY) -> DateTime[permalink][rdoc][edit]-
与えられた雛型で日時表現を解析し、その情報に基づいて DateTime オブジェクトを生成します。
- [PARAM]
str: - 日時をあらわす文字列
- [PARAM]
format: - 書式
- [PARAM]
start: - グレゴリオ暦をつかい始めた日をあらわすユリウス日
- [EXCEPTION]
ArgumentError: - 正しくない日時になる組み合わせである場合に発生します。
require 'date' p DateTime.strptime('2001-02-03T12:13:14Z').to_s # => "2001-02-03T12:13:14+00:00"[SEE_ALSO] Date.strptime, DateTime._strptime, strptime(3), Date#strftime
- [PARAM]
today(start = Date::ITALY) -> Date[permalink][rdoc][edit]-
このクラスでは利用できません。
DateTime.now を参照してください。
- [PARAM]
start: - グレゴリオ暦をつかい始めた日をあらわすユリウス日
- [PARAM]
xmlschema(str = '-4712-01-01T00:00:00+00:00', start = Date::ITALY) -> DateTimeRuby 1.9.3 から[permalink][rdoc][edit]-
XML Schema による書式の日付を解析し、その情報に基づいて日付オブジェクトを生成します。
Date._xmlschema も参照してください。
- [PARAM]
str: - 日付をあらわす文字列
- [PARAM]
start: - グレゴリオ暦をつかい始めた日をあらわすユリウス日
- [PARAM]
インスタンスメソッド
deconstruct_keys(array_of_names_or_nil) -> HashRuby 3.2 から[permalink][rdoc][edit]-
パターンマッチに使用する名前と値の Hash を返します。
キーに利用できる名前は以下の通りです。
- :year
- :month
- :day
- :yday
- :wday
- :hour
- :min
- :sec
- :sec_fraction
- :zone
- [PARAM]
array_of_names_or_nil: - パターンマッチに使用する名前の配列を指定します。nil の場合は全てをパターンマッチに使用します。
dt = DateTime.new(2022, 10, 5, 13, 30) if dt in wday: 1..5, hour: 10..18 # deconstruct_keys が使われます puts "Working time" end #=> "Working time" が出力される case dt in year: ...2022 puts "too old" in month: ..9 puts "quarter 1-3" in wday: 1..5, month: puts "working day in month #{month}" end #=> "working day in month 10" が出力される # クラスのチェックと組み合わせて利用することもできます if dt in DateTime(wday: 1..5, hour: 10..18, day: ..7) puts "Working time, first week of the month" end[SEE_ALSO] パターンマッチ/非プリミティブなオブジェクトのマッチ: deconstruct メソッドと deconstruct_keys メソッド
hour -> Integer[permalink][rdoc][edit]-
時間を返します (0-23)。
iso8601(n = 0) -> StringRuby 1.9.3 から[permalink][rdoc][edit]rfc3339(n = 0) -> Stringxmlschema(n = 0) -> String-
ISO 8601 書式の文字列を返します (XML Schema の dateTime 相当)。省略可能な引数により、印字する秒の小数点以下の桁数を与えることができます。
strftime('%FT%T%:z') と等価です。
- [PARAM]
n: - 小数点以下の桁数
require 'date' p DateTime.parse('2001-02-03T04:05:06.123456789+07:00').iso8601(9) #=> "2001-02-03T04:05:06.123456789+07:00" - [PARAM]
jisx0301(n = 0) -> StringRuby 1.9.3 から[permalink][rdoc][edit]-
JIS X 0301 書式の文字列を返します。省略可能な引数により、印字する秒の小数点以下の桁数を与えることができます。
- [PARAM]
n: - 小数点以下の桁数
require 'date' p DateTime.parse('2001-02-03T04:05:06.123456789+07:00').jisx0301(9) #=> "H13.02.03T04:05:06.123456789+07:00" - [PARAM]
min -> Integer[permalink][rdoc][edit]minute -> IntegerRuby 2.1.0 から-
分を返します (0-59)。
new_offset(offset = 0) -> DateTime[permalink][rdoc][edit]-
self を複製して、その時差を設定しなおします。引数を省略した場合は、零 (協定世界時) になります。
DateTime.new も参照してください。
- [PARAM]
offset: - 時差
- [PARAM]
offset -> Rational[permalink][rdoc][edit]-
時差を返します。
sec -> Integer[permalink][rdoc][edit]second -> IntegerRuby 2.1.0 から-
秒を返します (0-59)。
sec_fraction -> RationalRuby 2.1.0 から[permalink][rdoc][edit]second_fraction -> Rational-
秒の小数点以下の部分を表す分数を返します。
to_date -> DateRuby 3.0 から[permalink][rdoc][edit]-
対応する Date オブジェクトを返します。
to_datetime -> selfRuby 3.0 から[permalink][rdoc][edit]-
self を返します。
to_time -> TimeRuby 3.0 から[permalink][rdoc][edit]-
対応する Time オブジェクトを返します。
zone -> String[permalink][rdoc][edit]-
タイムゾーンを返します。
これは、正確には時差をあらわす文字列です。
追加されるメソッド
json_create(hash) -> DateTimeRuby 1.9.3 から[permalink][rdoc][edit] [added by json/add/date_time]-
JSON のオブジェクトから Ruby のオブジェクトを生成して返します。
- [PARAM]
hash: - 適切なキーを持つハッシュを指定します。
- [PARAM]
to_json(*args) -> StringRuby 1.9.3 から[permalink][rdoc][edit] [added by json/add/date_time]-
自身を JSON 形式の文字列に変換して返します。
内部的にはハッシュにデータをセットしてから JSON::Generator::GeneratorMethods::Hash#to_json を呼び出しています。
- [PARAM]
args: - 引数はそのまま JSON::Generator::GeneratorMethods::Hash#to_json に渡されます。
require "json/add/core" p DateTime.now.to_json # => "{\"json_class\":\"DateTime\",\"y\":2018,\"m\":12,\"d\":10,\"H\":1,\"M\":28,\"S\":57,\"of\":\"3/8\",\"sg\":2299161.0}" - [PARAM]