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

回答編集履歴

4

コード化

2016/10/31 16:18

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -38,4 +38,25 @@
38
38
  > HH,mm,ssそれぞれを抽出した場合、切り上げはどう記述すればいいでしょうか。
39
39
  もしくは何かしら簡単に算出できるメソッド?などありますか。
40
40
 
41
- HH,mm,ss同士て加算して、24または60で割った商を繰り上げて余りを再設定すればいいだけでは?
41
+ HH,mm,ss同士て加算して、24または60で割った商を繰り上げて余りを再設定すればいいだけでは?
42
+ ```java
43
+ List<String> dates; //上記の時刻データが格納されているListとする
44
+ int hour = 0;
45
+ int min = 0;
46
+ int sec = 0;
47
+ DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
48
+ Calendar cal = Calendar.getInstance();
49
+ for (String date : dates) {
50
+ //文字列を時刻解析して、時分秒ごとに加算
51
+ cal.setTime(format.parse(date));
52
+ hour += cal.get(Calendar.HOUR);
53
+ min += cal.get(Calendar.MINUTE);
54
+ sec += cal.get(Calendar.SECOND);
55
+ }
56
+ //秒→分の繰り上がり
57
+ min += sec / 60;
58
+ sec %= 60;
59
+ //分→時の繰り上がり
60
+ hour += min / 60;
61
+ min %= 60;
62
+ ```

3

補足

2016/10/31 16:17

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -31,4 +31,11 @@
31
31
 
32
32
  }
33
33
 
34
- ```
34
+ ```
35
+
36
+ ---
37
+
38
+ > HH,mm,ssそれぞれを抽出した場合、切り上げはどう記述すればいいでしょうか。
39
+ もしくは何かしら簡単に算出できるメソッド?などありますか。
40
+
41
+ HH,mm,ss同士て加算して、24または60で割った商を繰り上げて余りを再設定すればいいだけでは?

2

パッケージ宣言削除

2016/02/27 04:59

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -1,7 +1,5 @@
1
1
  Java8が使えるなら、それぞれをLocalTimeに変換してLocalTime.MIDNIGHTとDuration.between()を使ってDurationに変換して、それらを足しあわせていくという格好でしょうか…
2
2
  ```java
3
- package teratail;
4
-
5
3
  import java.time.Duration;
6
4
  import java.time.LocalTime;
7
5
  import java.time.format.DateTimeFormatter;

1

コード化

2016/02/27 04:21

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -1,1 +1,36 @@
1
- Java8が使えるなら、それぞれをLocalTimeに変換してLocalTime.MIDNIGHTとDuration.between()を使ってDurationに変換して、それらを足しあわせていくという格好でしょうか…
1
+ Java8が使えるなら、それぞれをLocalTimeに変換してLocalTime.MIDNIGHTとDuration.between()を使ってDurationに変換して、それらを足しあわせていくという格好でしょうか…
2
+ ```java
3
+ package teratail;
4
+
5
+ import java.time.Duration;
6
+ import java.time.LocalTime;
7
+ import java.time.format.DateTimeFormatter;
8
+ import java.time.format.DateTimeParseException;
9
+ import java.util.Scanner;
10
+ import java.util.stream.Stream;
11
+
12
+ public class Q28301 {
13
+
14
+ public static void main(String[] args) {
15
+ DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu-M-d HH:mm:ss");
16
+ Stream.Builder<LocalTime> builder = Stream.builder();
17
+ try (Scanner s = new Scanner(System.in)){
18
+ while(s.hasNextLine()){
19
+ try {
20
+ builder.accept(LocalTime.parse(s.nextLine(), dtf));
21
+
22
+ //当方の環境では入力終了がうまく認識しないため無理やり脱出
23
+ } catch (DateTimeParseException e) {
24
+ break;
25
+ }
26
+ }
27
+ Duration d = builder.build().map(e -> Duration.between(LocalTime.MIDNIGHT, e))
28
+ .reduce((e1, e2) -> e1.plus(e2))
29
+ .orElse(Duration.ZERO);
30
+ System.out.println(d);
31
+ }
32
+ }
33
+
34
+ }
35
+
36
+ ```