Date-Range-0.9 > Date::Range

名前

Date::Range - 日付の範囲を扱う

概要

  use Date::Range;

  my $range = Date::Range->new($date1, $date2);

  my $earliest = $range->start;
  my $latest   = $range->end;
  my $days     = $range->length;

  if ($range->includes($date3)) { ... }
  if ($range->includes($range2)) { ... }

  if ($range->overlaps($range2)) {
    my $range3 = $range->overlap($range2);
  }

  foreach my $date ($range->dates) { ... }

説明

日付を扱う場合、特定の日付だけではなく、日付の範囲の情報がほしいことがよくあります。たとえば、ある日付が特定の範囲にふくまれるかどうか、ある範囲と別の範囲が重なる場所はどこか、といったように、このモジュールで、こうした情報を得ることができます。

メソッド

new()

  my $range = Date::Range->new($date1, $date2);

範囲オブジェクトを2つの日付で初期化します。2つの日付は、時系列順になっている必要はありません(内部でソートします)。

これらの日付は、Date::Simple クラスのインスタンスである必要があります。

start() / end()

  my $earliest = $range->start;
  my $latest   = $range->end;
  my $days     = $range->length;

これらのメソッドは範囲の開始と終了の日付、範囲内の日数を返します。

equals

  if ($range1->equals($range2)) { }

2つの日付が同じかどうか - つまり開始と終了が同じ日付かどうかを返します。

includes

  if ($range->includes($date3)) { ... }
  if ($range->includes($range2)) { ... }

このメソッドは、ある範囲が、ある日付またはある範囲を含むかどうかを返します。

overlaps / overlap

  if ($range->overlaps($range2)) {
    my $range3 = $range->overlap($range2);
  }

これらのメソッドは、ある範囲が別の範囲に重なるかどうか、また重なる範囲を返します。

dates

  foreach my $date ($range->dates) { ... }

範囲内にある日付を Date::Simple オブジェクトのリストで返します。

バグ

いまのところなし。

作者

Tony Bowden, <[email protected]>, based heavily on Martin Fowler's "Analysis Patterns 2" discussion and code at http://www.martinfowler.com/ap2/range.html

コピーライト

Copyright (C) 2001 Tony Bowden. All rights reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.