# time.rb

組み込みの Time クラスを拡張します。日時を表す文字列をパースして Time オブジェクトに変換したり、逆に Time オブジェクトを RFC などで定められた文字列に変換したりする機能を提供します。

- date-time は RFC 2822 で定義されています。
- HTTP-date は RFC 2616 で定義されています。
- dateTime は XML Schema Part 2: Datatypes (ISO 8601) で定義されています。
- 文字列からTimeオブジェクトへの変換ではParseDateにより様々な形式を扱えます。

## Design Issue

[ruby-src:lib/time.rb]参照 執筆者募集

## クラスメソッド:

`Time.parse(date, now=Time.now)`
`Time.parse(date, now=Time.now) {|year| year}`

  dateをParseDate.parsedateによって パースしてTimeオブジェクトに変換します。

  ブロック付きで呼ばれた場合、dateの年はブロックによって変換されます。

  例:

      Time.parse(...) {|y| y < 100 ? (y >= 69 ? y + 1900 : y + 2000) : y}

  与えられた時刻に上位の要素がなかったり壊れていた場合、nowの 該当要素が使われます。 下位の要素がなかったり壊れていた場合、最小値(1か0)が使われます。

  例:

      # 現在時刻が "Thu Nov 29 14:33:20 GMT 2001" で
      # タイムゾーンがGMTとすると:
      Time.parse("16:30")     #=> Thu Nov 29 16:30:00 GMT 2001
      Time.parse("7/23")      #=> Mon Jul 23 00:00:00 GMT 2001
      Time.parse("2002/1")    #=> Tue Jan 01 00:00:00 GMT 2002

  *1

  ParseDateがdateから情報を取り出せないとき、または Timeクラスが指定された日時を表現できないときにArgumentErrorが 発生します。

  このメソッドは他のパース用メソッドのフェイルセーフとして以下のように使用できます:

      Time.rfc2822(date) rescue Time.parse(date)
      Time.httpdate(date) rescue Time.parse(date)
      Time.xmlschema(date) rescue Time.parse(date)

  従ってTime.parseの失敗はチェックすべきです。

`Time.rfc2822(date)`
`Time.rfc822(date)`

  RFC 2822で定義されているdate-timeとしてdateをパースして Timeオブジェクトに変換します。 この形式はRFC 822で定義されてRFC 1123で更新された形式と 同じです。

  dateがRFC 2822に準拠していない、または Timeクラスが指定された日時を表現できないときにArgumentErrorが 発生します。

`Time.httpdate(date)`

  RFC 2616で定義されているHTTP-dateとしてdateをパースして Timeオブジェクトに変換します。

  dateがRFC 2616に準拠していない、または Timeクラスが指定された日時を表現できないときにArgumentErrorが 発生します。

`Time.xmlschema(date)`
`Time.iso8601(date)`

  XML Schema で定義されているdateTimeとしてdateをパースして Timeオブジェクトに変換します。

  dateがISO 8601で定義されている形式に準拠していない、または Timeクラスが指定された日時を表現できないときにArgumentErrorが 発生します。

## メソッド:

`Time#rfc2822`
`Time#rfc822`

  RFC 2822で定義されているdate-timeとして表現される以下の形式の文字列を返します:

      day-of-week, DD month-name CCYY hh:mm:ss zone

  ただし zoneは [+-]hhmm です。

  selfがUTC timeの場合、zoneは +0000 になります。

`Time#httpdate`

  RFC 2616で定義されているHTTP-dateのrfc1123-dateとして 表現される以下の形式の文字列を返します:

      day-of-week, DD month-name CCYY hh:mm:ss GMT

  注意: 結果はいつも UTC (GMT) です。

`Time#xmlschema([fractional_seconds])`
`Time#iso8601([fractional_seconds])`

  XML Schemaで定義されているdateTimeとして 表現される以下の形式の文字列を返します:

      CCYY-MM-DDThh:mm:ssTZD
      CCYY-MM-DDThh:mm:ss.sssTZD

  ただし TZD は Z または [+-]hh:mm です。

  If self is a UTC time, Z is used as TZD. [+-]hh:mm is used otherwise.

  fractional_secondsは小数点以下の秒を指定します。 fractional_secondsのデフォルト値は0です。

*1 執筆者募集

links: [ArgumentError] [ParseDate] [Time] [time.rb] [執筆者募集]
reverse links: [ParseDate] [ruby 1.6 feature] [添付ライブラリ]