=encoding euc-jp =head1 NAME Date::Range - 日付の範囲を扱う =head1 SYNOPSIS 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) { ... } =head1 DESCRIPTION 日付を扱う場合、特定の日付だけではなく、日付の範囲の情報がほしいことがよくあります。たとえば、ある日付が特定の範囲にふくまれるかどうか、ある範囲と別の範囲が重なる場所はどこか、といったように、このモジュールで、こうした情報を得ることができます。 =head1 METHODS =head2 new() my $range = Date::Range->new($date1, $date2); 範囲オブジェクトを2つの日付で初期化します。2つの日付は、時系列順になっている必要はありません(内部でソートします)。 これらの日付は、Date::Simple クラスのインスタンスである必要があります。 =head2 start() / end() my $earliest = $range->start; my $latest = $range->end; my $days = $range->length; これらのメソッドは範囲の開始と終了の日付、範囲内の日数を返します。 =head2 equals if ($range1->equals($range2)) { } 2つの日付が同じかどうか - つまり開始と終了が同じ日付かどうかを返します。 =head2 includes if ($range->includes($date3)) { ... } if ($range->includes($range2)) { ... } このメソッドは、ある範囲が、ある日付またはある範囲を含むかどうかを返します。 =head2 overlaps / overlap if ($range->overlaps($range2)) { my $range3 = $range->overlap($range2); } これらのメソッドは、ある範囲が別の範囲に重なるかどうか、また重なる範囲を返します。 =head2 dates foreach my $date ($range->dates) { ... } 範囲内にある日付を Date::Simple オブジェクトのリストで返します。 =head1 BUGS いまのところなし。 =head1 AUTHOR Tony Bowden, Etony@tmtm.comE, based heavily on Martin Fowler's "Analysis Patterns 2" discussion and code at http://www.martinfowler.com/ap2/range.html =head1 COPYRIGHT 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.