class DateTime

[edit]

要約

日付だけでなく時刻も扱える 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

b - a            #=> 10
b.year           #=> 1993
b.strftime('%a') #=> "Sat"

yesterday = DateTime.now - 1

目次

特異メソッド
インスタンスメソッド

継承しているメソッド

Dateから継承しているメソッド
Comparableから継承しているメソッド

特異メソッド

_strptime(str, format = '%FT%T%z') -> Hash[permalink][rdoc][edit]

与えられた雛型で日時表現を解析し、その情報に基づいてハッシュを生成します。

[PARAM] str:
日時をあらわす文字列
[PARAM] format:
書式

例:

require 'date'
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

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:
正しくない日時
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:
正しくない日時
httpdate(str = 'Mon, 01 Jan -4712 00:00:00 GMT', start = Date::ITALY) -> DateTime[permalink][rdoc][edit]

[RFC2616] で定められた書式の日付を解析し、その情報に基づいて日付オブジェクトを生成します。

Date._httpdate も参照してください。

[PARAM] str:
日付をあらわす文字列
[PARAM] start:
グレゴリオ暦をつかい始めた日をあらわすユリウス日
iso8601(str = '-4712-01-01T00:00:00+00:00', start = Date::ITALY) -> DateTime[permalink][rdoc][edit]

いくつかの代表的な [[ISO:8601]] 書式の日付を解析し、その情報に基づいて日付オブジェクトを生成します。

[PARAM] str:
日付をあらわす文字列

Date._iso8601 も参照してください。

[PARAM] str:
日付をあらわす文字列
[PARAM] start:
グレゴリオ暦をつかい始めた日をあらわすユリウス日
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:
正しくない日時
jisx0301(str = '-4712-01-01T00:00:00+00:00', start = Date::ITALY) -> DateTime[permalink][rdoc][edit]

いくつかの代表的な [[JIS:X 0301]] 書式の日付を解析し、その情報に基づいて日付オブジェクトを生成します。

Date._jisx0301 も参照してください。

[PARAM] str:
日付をあらわす文字列
[PARAM] start:
グレゴリオ暦をつかい始めた日をあらわすユリウス日
now(start = Date::ITALY) -> DateTime[permalink][rdoc][edit]

現在の時刻に相当する日時オブジェクトを生成します。

[PARAM] start:
グレゴリオ暦をつかい始めた日をあらわすユリウス日
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:
正しくない日時
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'
DateTime.parse('2001-02-03T12:13:14Z').to_s
# => "2001-02-03T12:13:14+00:00"

[SEE_ALSO] Date._parse, Date.parse

rfc2822(str = 'Mon, 1 Jan -4712 00:00:00 +0000', start = Date::ITALY) -> DateTime[permalink][rdoc][edit]
rfc822(str = 'Mon, 1 Jan -4712 00:00:00 +0000', start = Date::ITALY) -> DateTime

[RFC2822] で定められた書式の日付を解析し、その情報に基づいて日付オブジェクトを生成します。

Date._rfc2822 も参照してください。

[PARAM] str:
日付をあらわす文字列
[PARAM] start:
グレゴリオ暦をつかい始めた日をあらわすユリウス日
rfc3339(str = '-4712-01-01T00:00:00+00:00', start = Date::ITALY) -> DateTime[permalink][rdoc][edit]

[RFC3339] 書式の日付を解析し、その情報に基づいて日付オブジェクトを生成します。

Date._rfc3339 も参照してください。

[PARAM] str:
日付をあらわす文字列
[PARAM] start:
グレゴリオ暦をつかい始めた日をあらわすユリウス日
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'
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

today(start = Date::ITALY) -> Date[permalink][rdoc][edit]

このクラスでは利用できません。

DateTime.now を参照してください。

[PARAM] start:
グレゴリオ暦をつかい始めた日をあらわすユリウス日
xmlschema(str = '-4712-01-01T00:00:00+00:00', start = Date::ITALY) -> DateTime[permalink][rdoc][edit]

XML Schema による書式の日付を解析し、その情報に基づいて日付オブジェクトを生成します。

Date._xmlschema も参照してください。

[PARAM] str:
日付をあらわす文字列
[PARAM] start:
グレゴリオ暦をつかい始めた日をあらわすユリウス日

インスタンスメソッド

deconstruct_keys(array_of_names_or_nil) -> Hash[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) -> String[permalink][rdoc][edit]
rfc3339(n = 0) -> String
xmlschema(n = 0) -> String

[[ISO:8601]] 書式の文字列を返します (XML Schema の dateTime 相当)。省略可能な引数により、印字する秒の小数点以下の桁数を与えることができます。

strftime('%FT%T%:z') と等価です。

[PARAM] n:
小数点以下の桁数

例:

require 'date'
DateTime.parse('2001-02-03T04:05:06.123456789+07:00').iso8601(9)
#=> "2001-02-03T04:05:06.123456789+07:00"
jisx0301(n = 0) -> String[permalink][rdoc][edit]

[[JIS:X 0301]] 書式の文字列を返します。省略可能な引数により、印字する秒の小数点以下の桁数を与えることができます。

[PARAM] n:
小数点以下の桁数

例:

require 'date'
DateTime.parse('2001-02-03T04:05:06.123456789+07:00').jisx0301(9)
#=> "H13.02.03T04:05:06.123456789+07:00"
min -> Integer[permalink][rdoc][edit]
minute -> Integer

分を返します (0-59)。

new_offset(offset = 0) -> DateTime[permalink][rdoc][edit]

self を複製して、その時差を設定しなおします。引数を省略した場合は、零 (協定世界時) になります。

DateTime.new も参照してください。

[PARAM] offset:
時差
offset -> Rational[permalink][rdoc][edit]

時差を返します。

sec -> Integer[permalink][rdoc][edit]
second -> Integer

秒を返します (0-59)。

sec_fraction -> Rational[permalink][rdoc][edit]
second_fraction -> Rational

秒の小数点以下の部分を表す分数を返します。

zone -> String[permalink][rdoc][edit]

タイムゾーンを返します。

これは、正確には時差をあらわす文字列です。