|
6 | 6 |
|
7 | 7 | use WizDevelop\PhpValueObject\DateTime\LocalDate; |
8 | 8 | use WizDevelop\PhpValueObject\DateTime\LocalDateRange; |
| 9 | +use WizDevelop\PhpValueObject\DateTime\RangeType; |
9 | 10 |
|
10 | 11 | require_once __DIR__ . '/../../vendor/autoload.php'; |
11 | 12 |
|
12 | 13 | // 1. 基本的な使用例:月間の範囲 |
13 | 14 | echo "=== 基本的な使用例 ===\n"; |
14 | 15 | $startOfMonth = LocalDate::of(2024, 1, 1); |
15 | 16 | $endOfMonth = LocalDate::of(2024, 1, 31); |
16 | | -$january = LocalDateRange::closed($startOfMonth, $endOfMonth); |
| 17 | +$january = LocalDateRange::from($startOfMonth, $endOfMonth); |
17 | 18 |
|
18 | 19 | echo "1月の期間: {$january->toISOString()}\n"; |
19 | 20 | echo "日数: {$january->days()} 日\n\n"; |
20 | 21 |
|
21 | 22 | // 2. 開区間と閉区間の違い |
22 | 23 | echo "=== 開区間と閉区間の違い ===\n"; |
23 | | -$closedWeek = LocalDateRange::closed( |
| 24 | +$closedWeek = LocalDateRange::from( |
24 | 25 | LocalDate::of(2024, 1, 1), |
25 | | - LocalDate::of(2024, 1, 7) |
| 26 | + LocalDate::of(2024, 1, 7), |
| 27 | + RangeType::CLOSED, |
26 | 28 | ); |
27 | | -$openWeek = LocalDateRange::open( |
| 29 | +$openWeek = LocalDateRange::from( |
28 | 30 | LocalDate::of(2024, 1, 1), |
29 | | - LocalDate::of(2024, 1, 7) |
| 31 | + LocalDate::of(2024, 1, 7), |
| 32 | + RangeType::OPEN, |
30 | 33 | ); |
31 | 34 |
|
32 | 35 | echo "閉区間(両端含む): {$closedWeek->toISOString()} = {$closedWeek->days()} 日\n"; |
|
35 | 38 | // 3. 半開区間の使用例(一般的な日付範囲の表現) |
36 | 39 | echo "=== 半開区間の使用例 ===\n"; |
37 | 40 | // 月初から月末まで(月末を含まない一般的なパターン) |
38 | | -$month = LocalDateRange::halfOpenRight( |
| 41 | +$month = LocalDateRange::from( |
39 | 42 | LocalDate::of(2024, 1, 1), |
40 | | - LocalDate::of(2024, 2, 1) |
| 43 | + LocalDate::of(2024, 2, 1), |
| 44 | + RangeType::HALF_OPEN_RIGHT, |
41 | 45 | ); |
42 | 46 |
|
43 | 47 | echo "1月(右半開区間): {$month->toISOString()}\n"; |
|
46 | 50 |
|
47 | 51 | // 4. 日付の反復処理 |
48 | 52 | echo "=== 日付の反復処理 ===\n"; |
49 | | -$weekRange = LocalDateRange::closed( |
| 53 | +$weekRange = LocalDateRange::from( |
50 | 54 | LocalDate::of(2024, 1, 1), |
51 | | - LocalDate::of(2024, 1, 7) |
| 55 | + LocalDate::of(2024, 1, 7), |
| 56 | + RangeType::CLOSED, |
52 | 57 | ); |
53 | 58 |
|
54 | 59 | echo "1週間の日付:\n"; |
55 | | -foreach ($weekRange->iterate() as $date) { |
| 60 | +foreach ($weekRange->getIterator() as $date) { |
56 | 61 | echo " - {$date->toISOString()}\n"; |
57 | 62 | } |
58 | 63 | echo "\n"; |
59 | 64 |
|
60 | 65 | // 5. 期間の重なり判定 |
61 | 66 | echo "=== 期間の重なり判定 ===\n"; |
62 | | -$q1 = LocalDateRange::closed( |
| 67 | +$q1 = LocalDateRange::from( |
63 | 68 | LocalDate::of(2024, 1, 1), |
64 | | - LocalDate::of(2024, 3, 31) |
| 69 | + LocalDate::of(2024, 3, 31), |
| 70 | + RangeType::CLOSED, |
65 | 71 | ); |
66 | | -$q2 = LocalDateRange::closed( |
| 72 | +$q2 = LocalDateRange::from( |
67 | 73 | LocalDate::of(2024, 4, 1), |
68 | | - LocalDate::of(2024, 6, 30) |
| 74 | + LocalDate::of(2024, 6, 30), |
| 75 | + RangeType::CLOSED, |
69 | 76 | ); |
70 | | -$marchToMay = LocalDateRange::closed( |
| 77 | +$marchToMay = LocalDateRange::from( |
71 | 78 | LocalDate::of(2024, 3, 1), |
72 | | - LocalDate::of(2024, 5, 31) |
| 79 | + LocalDate::of(2024, 5, 31), |
| 80 | + RangeType::CLOSED, |
73 | 81 | ); |
74 | 82 |
|
75 | 83 | echo "第1四半期: {$q1->toISOString()}\n"; |
|
81 | 89 |
|
82 | 90 | // 6. 特定の日付が期間内かチェック |
83 | 91 | echo "=== 期間内チェック ===\n"; |
84 | | -$vacation = LocalDateRange::closed( |
| 92 | +$vacation = LocalDateRange::from( |
85 | 93 | LocalDate::of(2024, 8, 10), |
86 | | - LocalDate::of(2024, 8, 20) |
| 94 | + LocalDate::of(2024, 8, 20), |
87 | 95 | ); |
88 | 96 | $checkDate = LocalDate::of(2024, 8, 15); |
89 | 97 |
|
|
94 | 102 | echo "=== エラーハンドリング ===\n"; |
95 | 103 | $invalidResult = LocalDateRange::tryFrom( |
96 | 104 | LocalDate::of(2024, 12, 31), |
97 | | - LocalDate::of(2024, 1, 1) |
| 105 | + LocalDate::of(2024, 1, 1), |
| 106 | + RangeType::CLOSED, |
98 | 107 | ); |
99 | 108 |
|
100 | 109 | if ($invalidResult->isErr()) { |
|
108 | 117 | $startDate = LocalDate::of(2024, 1, 1); |
109 | 118 | $endDate = null; |
110 | 119 |
|
111 | | -$optionRange = LocalDateRange::fromNullable($startDate, $endDate); |
112 | | -if ($optionRange->isNone()) { |
113 | | - echo "範囲を作成できませんでした(いずれかの値がnullです)\n"; |
114 | | -} |
115 | | - |
116 | 120 | // 9. 年間カレンダーの例 |
117 | 121 | echo "\n=== 年間カレンダーの例 ===\n"; |
118 | | -$year2024 = LocalDateRange::closed( |
| 122 | +$year2024 = LocalDateRange::from( |
119 | 123 | LocalDate::of(2024, 1, 1), |
120 | | - LocalDate::of(2024, 12, 31) |
| 124 | + LocalDate::of(2024, 12, 31), |
| 125 | + RangeType::CLOSED, |
121 | 126 | ); |
122 | 127 |
|
123 | 128 | echo "2024年: {$year2024->toISOString()}\n"; |
|
0 commit comments