DateTime

日付・時刻オブジェクトを提供する

use DateTime;
DateTimeパッケージをロードする。

my $dt = DateTime->new( year => 2009, month => 2, day => 17, hour => 8, minute => 51, second => 23,
nanosecond => 0, locale => 'ja_JP', time_zone => 'Asia/Tokyo');

日時を直接指定してインスタンスを生成する。不正な日時を指定するとdieする。
year :西暦。
month , day :1から始まる通常の月日。
hour , minutes , second , nanosecond :0から始まる通常の時刻。
time_zone:DateTime::TimeZoneで使われるタイムゾーン文字列を指定。
    世界協定時は、'UTC'。JSTは、'Asia/Tokyo'。
    または、時刻表記文字列。例えば、'+0900'。localtimeを使うなら'local'。
locale:month_nameメソッドなどの出力を決定する為のロケール。デフォルトは'en_US'。
    例えば'ja_JP'を設定すると、month_nameは、'2月'をutf8文字列で返す。

my $dt = DateTime->from_epoch( epoch => $epoch, locale => 'ja_JP', time_zone => 'Asia/Tokyo' );
epochタイム(1970年1月1日00:00:00 UTC からの経過秒)を指定してインスタンスを生成する。

my $dt = DateTime->now( locale => 'ja_JP', time_zone => 'Asia/Tokyo' );
現時刻を保持するインスタンスを生成する。

my $dt = DateTime->today( locale => 'ja_JP', time_zone => 'Asia/Tokyo' );
今日の00:00:00を保持するインスタンスを生成する。

my $dt = DateTime->last_day_of_month( ... );
newメソッドのパラメタのうちdayパラメタ以外を指定して、月末の日時を保持するインスタンスを生成する。

my $newdt = $dt->clone();
$dtが保持する日時と同一の日時を保持する新しいインスタンスを生成する。

Get系メソッド(一覧)

$dt->year()    // 年
$dt->month()    // 月(1~12)
$dt->mon()     //  〃
$dt->day_of_month()// 日(1~31)
$dt->day()     //  〃
$dt->mday()    //  〃
$dt->day_of_week() // 曜日(1~7:1=月,2=火,…,7=日)
$dt->wday()    //  〃
$dt->dow()     //  〃
$dt->hour()    // 時(0~23)
$dt->hour_12()   // 時(1~12)
$dt->hour_12_0()  // 時(0~11)
$dt->am_or_pm()  // AM or PM
$dt->minute()   // 分(0~59)
$dt->min()     //  〃
$dt->second()   // 秒(0~61)※60,61 はうるう秒
$dt->sec()     //  〃
$dt->fractional_second() // 秒(0.0~61.999999999)
$dt->millisecond() // ミリ秒
$dt->microsecond() // マイクロ秒
$dt->nanosecond() // ナノ秒

$dt->christian_era() // "BC" or "AD"
$dt->month_name()   // 月名、localeの設定を参照する。
           // ja_JPの場合は、UTF8で"2月"等が返る。
$dt->month_abbr()   // 短縮月名、localeの設定を参照する。
           // ja_JPの場合は、month_nameと同じ。
$dt->day_name()    // 曜日名、localeの設定を参照する。
           // ja_JPの場合は、UTF8で"木曜日"等が返る。
$dt->day_abbr()    // 短縮曜日名、localeの設定を参照する。
           // ja_JPの場合は、UTF8で"木"等が返る。
$dt->day_of_year()  // 年内での通し日
$dt->doy()      //   〃
$dt->quarter()    // calender yearの四半期(1~4)
$dt->quarter_name()  // calender yearの四半期名、localeの設定を参照する。
           // ja_JPの場合は、UTF8で"第1四半期"等が返る。
$dt->quarter_abbr()  // calender yearの短縮四半期名、localeの設定を参照する。
           // ja_JPの場合は、"Q1"等が返る(en_USと同じ)。
$dt->day_of_quarter() // 四半期内での通し日
$dt->doq()      //   〃
$dt->weekday_of_month() // 第○?曜日の○(1~5)
$dt->ymd( $optional_separator ) // yyyy-mm-dd セパレータはパラメタで変更できる。
$dt->mdy( $optional_separator ) // mm-dd-yyyy    〃
$dt->dmy( $optional_separator ) // dd-mm-yyyy    〃
$dt->hms( $optional_separator ) // hh:mm:ss     〃
$dt->time( $optional_separator ) //   〃      〃

$dt->is_leap_year()  // うるう年の時、1を返す。
$dt->week_year()   // ISO8601の年週コードの年
$dt->week_number()  // ISO8601の年週コードの週(1~53)
$dt->time_zone()   // Datetime::TimeZoneオブジェクトを返す。
$dt->offset()     // UTCとの時差を秒で返す。
$dt->is_dst()     // 夏時間の時、1を返す。
$dt->time_zone_long_name() // タイムゾーン名、time_zoneパラメタの設定値と同じ。
$dt->time_zone_short_name() // タイムゾーン短縮名、Asia/Tokyoの場合は"JST"。
$dt->strftime( $format, ... ) // C言語のstrftimeと同じ
$dt->epoch()     // epochタイム(1970年1月1日00:00:00 UTC からの経過秒)
$dt->locale()     // locale

Set系メソッド(一覧)

$dt->set( .. )    // new()メソッドと同様なパラメタを使って設定(time_zoneを除く)
$dt->set_year()    // 年
$dt->set_month()   // 月
$dt->set_day()    // 日
$dt->set_hour()    // 時
$dt->set_minute()   // 分
$dt->set_second()   // 秒
$dt->set_nanosecond() // ナノ秒
$dt->set_locale()  // ロケール
$dt->truncate( to => ... ) // 切り捨て、例えば to => day なら時刻部分を切り捨てる。
$dt->set_time_zone( $tz )  // タイムゾーン

Math系メソッド(一覧)

$dt->add_duration( $duration_object )      // 加算
$dt->add( DateTime::Duration new parameters )  // Duration->newのパラメタを加算
$dt->subtract_duration( $duration_object ) // 減算
$dt->subtract( DateTime::Duration new parameters )  // Duration->newのパラメタを減算
$dt->subtract_datetime( $datetime )   // $datetimeを減算してDurationを返す
                // 月←→日の変換は一定しないので厳密な減算ではない
$dt->subtract_datetime_absolute( $datetime )  // $datetimeを減算してDurationを返す
                // 秒単位で減算してDurationに変換する厳密な減算

Class系メソッド(一覧)

DateTime->compare( $dt1, $dt2 )    // -1 if $dt1 < $dt2, 0 if $dt1 == $dt2
                  // 1 if $dt1 > $dt2.
@dates = sort @dates;         // ソート

インスタンス同士を普通に比較することも可能。
$dt1 == $dt2 , $dt1 < $dt2 , $dt1 >= $dt2 , などなど