質問編集履歴

3

2022/05/08 08:29

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,13 +1,4 @@
1
1
  前回日付計算の質問をして、回答いただいたコードや他のサイトのコードを参考に実装できたのですが、テストしていたら閏年でエラーに気づき、修正していたら何をしているのかわからなくなりました。
2
- **実装内容**
3
- 西暦□年□月□日 から
4
- □日後
5
- 結果ボタン→ボタン押したら、ボタンの下に、西暦□年□月□日です
6
- という実装で、□の部分をユーザーが記入します。
7
- 閏年に気を付けること
8
- 実在しない日付で結果ボタンを押したら、アラート表示、その後記入内容クリア
9
- という条件です。
10
-
11
2
  **やりたいこと**
12
3
  ・閏年じゃない際は28日と記入した時、普通に計算される
13
4
  ・アラート表示後のリセットの実装
@@ -20,48 +11,3 @@
20
11
  閏年に関しては、new Dateでnew Date(year, 1, 29).getDate() === 29など入れてみたり、ifで閏年の判定してみたのですが、わからなくなり、詰まりました。
21
12
  アドバイスいただきたいです。よろしくお願いいたします。
22
13
 
23
- ```HTML
24
- <body>
25
- <form name="form">
26
- 西暦<input type="text" id="year" style="width:50px; height:30px; border:solid 2px;"></input>
27
- 年<input type="text" id="month" style="width:50px; height:30px; border:solid 2px;"></input>
28
- 月<input type="text" id="day" style="width:50px; height:30px; border:solid 2px;"></input>
29
- 日 から
30
- <br>
31
- <br>
32
- <input type="text" id="date" style="width:50px; height:30px; border:solid 2px;"></input>日後は?
33
- <br>
34
- <br>
35
- <input type="button" value="計算" style="width:50px; height:30px; border:solid 2px; text-align:center;" onclick="testfunc()"></input>
36
- </form>
37
- <p id="kekka"></p>
38
- ```
39
- ``` JavaScript
40
- function testfunc(n) {
41
- var kekka = document.getElementById("kekka");
42
- var y = document.getElementById("year").value;
43
- var m = document.getElementById("month").value;
44
- var d = document.getElementById("day").value;
45
- var n = (new Function("return " + document.form.date.value))();
46
- var nmsec = n * 1000 * 60 * 60 * 24;
47
- var msec = (new Date("" + y + "/" + m + "/" + d)).getTime();
48
- var dt = new Date(msec + nmsec );
49
- var year = dt.getFullYear();
50
- var month = dt.getMonth() + 1;
51
- var date = dt.getDate();
52
- kekka.innerHTML = "";
53
-
54
- if (y % 400 === 0 || y % 100 !== 0 && y % 4 === 0) {
55
- d <= 29;
56
- }else {
57
- d <= 28;
58
- alert("実在しない日付です!");
59
- }if(d >= 31) {
60
- alert("実在しない日付です!");
61
- }else if (m >= 12) {
62
- alert("実在しない日付です!");
63
- }else {
64
- kekka.innerHTML = "西暦" + year + "年" + month + "月" + date + "日です。";
65
- }
66
- }
67
- ```

2

2022/05/07 10:07

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  **エラー**
16
16
  非閏年で2月29日と記入、ボタンを押すとアラートが出るのに、
17
- 非閏年で2月28日と記入、ボタンを押すとアラートが出てしまいます。
17
+ 非閏年で2月28日と記入、ボタンを押すとこちらにもアラートが出てしまいます。
18
18
 
19
19
  htmlのサイト表示内容はしっかり実装できています。
20
20
  閏年に関しては、new Dateでnew Date(year, 1, 29).getDate() === 29など入れてみたり、ifで閏年の判定してみたのですが、わからなくなり、詰まりました。

1

2022/05/07 10:00

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -9,9 +9,12 @@
9
9
  という条件です。
10
10
 
11
11
  **やりたいこと**
12
- 閏年際は日と記入した時、普通に計算される
12
+ 閏年じゃない際は2日と記入した時、普通に計算される
13
- 閏年じゃない際は29日と記入した時、アラート表示、記入内容リセット
14
- アラート表示後のリセットの実装
13
+ アラート表示後のリセットの実装
14
+
15
+ **エラー**
16
+ 非閏年で2月29日と記入、ボタンを押すとアラートが出るのに、
17
+ 非閏年で2月28日と記入、ボタンを押すとアラートが出てしまいます。
15
18
 
16
19
  htmlのサイト表示内容はしっかり実装できています。
17
20
  閏年に関しては、new Dateでnew Date(year, 1, 29).getDate() === 29など入れてみたり、ifで閏年の判定してみたのですが、わからなくなり、詰まりました。