回答編集履歴
1
流れだけ書いていた部分をPHPのコードにしてみました。
test
CHANGED
@@ -4,36 +4,74 @@
|
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
+
誰も見てないだろうけど、せっかくなので調べてコードにしてみました。
|
8
|
+
|
7
|
-
|
9
|
+
1年の日曜日の数が間違ってたのをこっそり修正
|
8
10
|
|
9
11
|
|
10
12
|
|
13
|
+
とりあえず動いたけど、ifとかforのスコープ内で作った変数って外で使っていいのかな?
|
14
|
+
|
15
|
+
|
16
|
+
|
11
|
-
```
|
17
|
+
```PHP
|
18
|
+
|
19
|
+
<?php
|
12
20
|
|
13
21
|
// 1月1日の曜日を求める
|
14
22
|
|
15
23
|
// 曜日 = 0:日曜日~6:土曜日
|
16
24
|
|
25
|
+
$year = 2016;
|
17
26
|
|
18
|
-
|
19
|
-
// 最初の日曜日は何日目か
|
20
|
-
|
21
|
-
|
27
|
+
$week = date("w", mktime(0, 0, 0, 1, 1, $year));
|
22
28
|
|
23
29
|
|
24
30
|
|
25
31
|
// 1年間の日曜日の数
|
26
32
|
|
27
|
-
//
|
33
|
+
// うるう年だと1/1が日曜か土曜日だと53回、それ以外は52回
|
28
34
|
|
29
|
-
//
|
35
|
+
// 平年だと1/1が日曜だと53回、それ以外は52回
|
30
36
|
|
37
|
+
if (($year % 4 == 0 && $year % 100 != 0) || ($year % 400 == 0)) {
|
38
|
+
|
31
|
-
|
39
|
+
$weeks = [53, 52, 52, 52, 52, 52, 53];
|
40
|
+
|
41
|
+
} else {
|
42
|
+
|
43
|
+
$weeks = [53, 52, 52, 52, 52, 52, 52];
|
44
|
+
|
45
|
+
}
|
46
|
+
|
47
|
+
$sundayTimes = $weeks[$week];
|
32
48
|
|
33
49
|
|
34
50
|
|
51
|
+
// 年の最初の日曜日は何日目か
|
52
|
+
|
53
|
+
$firstSunday = [1, 7, 6, 5, 4, 3, 2];
|
54
|
+
|
35
|
-
// 最初の日曜日から(1年間の日曜日の数 - 1)回、7日を足す
|
55
|
+
// 年の最初の日曜日から(1年間の日曜日の数 - 1)回、7日を足す
|
56
|
+
|
57
|
+
$sunday = mktime(0, 0, 0, 1, $firstSunday[$week], $year);
|
58
|
+
|
59
|
+
for ($idx = 0; $idx < $sundayTimes; $idx++) {
|
60
|
+
|
61
|
+
// とりあえず配列に入れておく
|
62
|
+
|
63
|
+
$sundays[$idx] = date("y-m-d", $sunday);
|
64
|
+
|
65
|
+
$sunday += 604800; // 7日 * 24時間 * 60分 * 60秒
|
66
|
+
|
67
|
+
}
|
36
68
|
|
37
69
|
|
38
70
|
|
71
|
+
// この関数なに?デバッグ用?
|
72
|
+
|
73
|
+
var_dump($sundays);
|
74
|
+
|
75
|
+
?>
|
76
|
+
|
39
77
|
```
|