回答編集履歴

4

コード化

2016/10/31 16:18

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -79,3 +79,45 @@
79
79
 
80
80
 
81
81
  HH,mm,ss同士て加算して、24または60で割った商を繰り上げて余りを再設定すればいいだけでは?
82
+
83
+ ```java
84
+
85
+ List<String> dates; //上記の時刻データが格納されているListとする
86
+
87
+ int hour = 0;
88
+
89
+ int min = 0;
90
+
91
+ int sec = 0;
92
+
93
+ DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
94
+
95
+ Calendar cal = Calendar.getInstance();
96
+
97
+ for (String date : dates) {
98
+
99
+ //文字列を時刻解析して、時分秒ごとに加算
100
+
101
+ cal.setTime(format.parse(date));
102
+
103
+ hour += cal.get(Calendar.HOUR);
104
+
105
+ min += cal.get(Calendar.MINUTE);
106
+
107
+ sec += cal.get(Calendar.SECOND);
108
+
109
+ }
110
+
111
+ //秒→分の繰り上がり
112
+
113
+ min += sec / 60;
114
+
115
+ sec %= 60;
116
+
117
+ //分→時の繰り上がり
118
+
119
+ hour += min / 60;
120
+
121
+ min %= 60;
122
+
123
+ ```

3

補足

2016/10/31 16:17

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -65,3 +65,17 @@
65
65
 
66
66
 
67
67
  ```
68
+
69
+
70
+
71
+ ---
72
+
73
+
74
+
75
+ > HH,mm,ssそれぞれを抽出した場合、切り上げはどう記述すればいいでしょうか。
76
+
77
+ もしくは何かしら簡単に算出できるメソッド?などありますか。
78
+
79
+
80
+
81
+ HH,mm,ss同士て加算して、24または60で割った商を繰り上げて余りを再設定すればいいだけでは?

2

パッケージ宣言削除

2016/02/27 04:59

投稿

swordone
swordone

スコア20651

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

1

コード化

2016/02/27 04:21

投稿

swordone
swordone

スコア20651

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