teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

6

24時間ずらす理由を追記

2020/05/29 00:52

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -26,4 +26,19 @@
26
26
  + cal3.add(Calendar.HOUR, -24);
27
27
  +}
28
28
  String tame6 =format2.format(cal3.getTime());
29
+ ```
30
+
31
+ ---
32
+ > 現在時刻を24時間前に戻しても、結果としては同じ時刻になるので変わらないのではないのか。と思ってしまいました。
33
+
34
+ 時刻だけ指定したとしても年月日(1970年1月1日)が存在していることをわすれていませんか?
35
+ ```Java
36
+ SimpleDateFormat format =new SimpleDateFormat("HHmm");
37
+ Date t = format.parse("1234", new ParsePosition(0));
38
+ SimpleDateFormat format2 =new SimpleDateFormat("yyyyMMddHHmmss");
39
+ System.out.println(format2.format(t));
40
+ ```
41
+ 結果
42
+ ```
43
+ 19700101123400
29
44
  ```

5

コード追記

2020/05/29 00:52

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -17,4 +17,13 @@
17
17
  ```
18
18
 
19
19
  - 問題点3
20
- このままのコードだと実施時間を`0000`〜`0029`にした場合は30分前が前日となり、現在時刻`2330`〜`2359`が範囲外と判定されます
20
+ このままのコードだと実施時間を`0000`〜`0029`にした場合は30分前が前日となり、現在時刻`2330`〜`2359`が範囲外と判定されます。
21
+ 表示は時分だけなので、実施時間が`0000`〜`0029`なら現在時間を24時間前にずらしてやれば動きますね。
22
+ ```diff
23
+ cal3.setTime(time4);//現在時間
24
+ +if(b<30)
25
+ +{
26
+ + cal3.add(Calendar.HOUR, -24);
27
+ +}
28
+ String tame6 =format2.format(cal3.getTime());
29
+ ```

4

書式修正

2020/05/28 15:46

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -16,4 +16,5 @@
16
16
  +String p = String.format("%04d",o);
17
17
  ```
18
18
 
19
+ - 問題点3
19
20
  このままのコードだと実施時間を`0000`〜`0029`にした場合は30分前が前日となり、現在時刻`2330`〜`2359`が範囲外と判定されますね。

3

0000~0029について修正

2020/05/28 15:40

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -14,4 +14,6 @@
14
14
  +String c = String.format("%04d",b);
15
15
  -String p = String.valueOf(o)
16
16
  +String p = String.format("%04d",o);
17
- ```
17
+ ```
18
+
19
+ このままのコードだと実施時間を`0000`〜`0029`にした場合は30分前が前日となり、現在時刻`2330`〜`2359`が範囲外と判定されますね。

2

0000-0029について誤認していたので削除

2020/05/28 15:38

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -14,7 +14,4 @@
14
14
  +String c = String.format("%04d",b);
15
15
  -String p = String.valueOf(o)
16
16
  +String p = String.format("%04d",o);
17
- ```
17
+ ```
18
-
19
- ---
20
- このままのコードだと`0000`〜`0029`は30分前が前日となりだめですね。

1

0000~0029につて追記

2020/05/28 15:34

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -14,4 +14,7 @@
14
14
  +String c = String.format("%04d",b);
15
15
  -String p = String.valueOf(o)
16
16
  +String p = String.format("%04d",o);
17
- ```
17
+ ```
18
+
19
+ ---
20
+ このままのコードだと`0000`〜`0029`は30分前が前日となりだめですね。