質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

5回答

5775閲覧

JAVA dateの複数のデータの時刻だけを加算するには

snakeriver

総合スコア76

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

0クリップ

投稿2016/02/25 14:02

編集2022/01/12 10:55

date型で 複数の日時と時刻が含まれるデータがあります、これをjavaで全部足して合計時間を出すにはどうすればいいでしょうか。
例えば
2016-2-25 06:30:10
2016-2-26 04:20:55
2016-2-27 10:45:24
とかのデータがあります(数十件)。
この時刻だけを足して、合計21:36:29と算出したいのですが、
どうすればいいでしょうか。

HH,mm,ssそれぞれを抽出した場合、切り上げはどう記述すればいいでしょうか。
もしくは何かしら簡単に算出できるメソッド?などありますか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

Stringから抽出して見ました

java

1import java.util.Date; 2 3public class V{ 4 5 6public static void main(String[] args){ 7 8Date d=new Date(); 9Date e=new Date(); 10Date f=new Date(); 11 12 13System.out.println("d:"+d); 14 15System.out.println("e:"+e); 16 17System.out.println("f:"+f); 18 19 20 21String[] d2=d.toString().split(" ", 0); 22String[] d3=d2[3].split(":", 0); 23 24String[] e2=d.toString().split(" ", 0); 25String[] e3=e2[3].split(":", 0); 26 27String[] f2=f.toString().split(" ", 0); 28String[] f3=f2[3].split(":", 0); 29 30 31int d33[]=new int[3]; 32int e33[]=new int[3]; 33int f33[]=new int[3]; 34 35 36try{ 37 38for(int i=0;i<3;i++){ 39d33[i]=Integer.parseInt(d3[i]); 40e33[i]=Integer.parseInt(e3[i]); 41f33[i]=Integer.parseInt(f3[i]); 42 43 44} 45 46}catch(Exception v){} 47 48 49int g=0,h=0,i=0; 50 51h=h+(d33[2]+e33[2]+f33[2])/60; 52i=i+(d33[2]+e33[2]+f33[2])%60; 53 54g=(h+d33[1]+e33[1]+f33[1])/60; 55h=(h+d33[1]+e33[1]+f33[1])%60; 56 57g=g+d33[0]+e33[0]+f33[0]; 58 59System.out.println(g+":"+h+":"+i); 60 61 62} 63 64 65}

投稿2016/10/31 04:51

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

他の方の回答にも有りますが、Calendarクラスを使って時分秒のみ加算する方法が有るかと思います。

Java 日付・時刻の計算 加算・減算が簡単に

上記コンテンツのサンプルが簡単かと思いますが、時間がオーバーフロー(24を超えた)場合は日の増加をチェックする必要があるので、その方法は別途必要になります。

投稿2016/02/27 00:03

BlueMoon

総合スコア1339

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

snakeriver

2016/03/08 12:59

ありがとうございます!時分秒でそれぞれ足して、millisecondで全部足して、60づつ割って表示できました。
guest

0

Java8が使えるなら、それぞれをLocalTimeに変換してLocalTime.MIDNIGHTとDuration.between()を使ってDurationに変換して、それらを足しあわせていくという格好でしょうか…

java

1import java.time.Duration; 2import java.time.LocalTime; 3import java.time.format.DateTimeFormatter; 4import java.time.format.DateTimeParseException; 5import java.util.Scanner; 6import java.util.stream.Stream; 7 8public class Q28301 { 9 10 public static void main(String[] args) { 11 DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu-M-d HH:mm:ss"); 12 Stream.Builder<LocalTime> builder = Stream.builder(); 13 try (Scanner s = new Scanner(System.in)){ 14 while(s.hasNextLine()){ 15 try { 16 builder.accept(LocalTime.parse(s.nextLine(), dtf)); 17 18 //当方の環境では入力終了がうまく認識しないため無理やり脱出 19 } catch (DateTimeParseException e) { 20 break; 21 } 22 } 23 Duration d = builder.build().map(e -> Duration.between(LocalTime.MIDNIGHT, e)) 24 .reduce((e1, e2) -> e1.plus(e2)) 25 .orElse(Duration.ZERO); 26 System.out.println(d); 27 } 28 } 29 30} 31

HH,mm,ssそれぞれを抽出した場合、切り上げはどう記述すればいいでしょうか。

もしくは何かしら簡単に算出できるメソッド?などありますか。

HH,mm,ss同士て加算して、24または60で割った商を繰り上げて余りを再設定すればいいだけでは?

java

1List<String> dates; //上記の時刻データが格納されているListとする 2int hour = 0; 3int min = 0; 4int sec = 0; 5DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 6Calendar cal = Calendar.getInstance(); 7for (String date : dates) { 8 //文字列を時刻解析して、時分秒ごとに加算 9 cal.setTime(format.parse(date)); 10 hour += cal.get(Calendar.HOUR); 11 min += cal.get(Calendar.MINUTE); 12 sec += cal.get(Calendar.SECOND); 13} 14//秒→分の繰り上がり 15min += sec / 60; 16sec %= 60; 17//分→時の繰り上がり 18hour += min / 60; 19min %= 60;

投稿2016/02/26 05:11

編集2016/10/31 16:18
swordone

総合スコア20649

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

snakeriver

2016/03/08 13:01

今回はjava7での使用でした!すみません。しかしながら勉強になりました。ありがとうございます。
guest

0

以下のようにdateクラスの差分を求めて、加算する方式はいかがでしょうか?
60000で割っているところはdateクラスの差分がミリ秒でかえってくるので、分に変換しています。

import java.io.;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.
;

public class Main {

public static void main(String args[]) throws ParseException { ArrayList<String> samplelist = new ArrayList<String>(); long date_diff=0; samplelist.add("2016-2-25 06:30:10"); samplelist.add("2016-2-26 04:20:55"); samplelist.add("2016-2-27 10:45:24"); DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); for(int i=0;i<samplelist.size()-1;i++){ // Dateクラスを二つ定義(差分を出すため) Date dt_upper = df.parse(samplelist.get(i+1)); Date dt_downer = df.parse(samplelist.get(i)); /* date_diff * 二つの時刻(dt_upper,dt_downer)の差分は * 結果がミリ秒のため60,000で割って分に直す */ date_diff= date_diff + ((dt_upper.getTime() - dt_downer.getTime()) / 60000); } System.out.println("合計時間="+date_diff + " 分"); }

}

投稿2016/02/25 16:04

dirkid

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

snakeriver

2016/02/25 22:58

すみません!なぜ差分を出しているのでしょうか?(i+1)-iで日にちがマイナスされるということでしょうか。
guest

0

Calendarを使うと良いのではないでしょうか。

http://java-reference.sakuraweb.com/java_date_calendar.html
//年を未定義にする
cal.clear(Calendar.YEAR);

投稿2016/02/25 14:14

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

snakeriver

2016/02/25 14:34

ありがとうございます!+= が単純に使えないようですが、hh, mm, ssをそれぞれ抽出するしかないのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問