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

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

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

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

Q&A

解決済

2回答

1015閲覧

Javaで日付の差を「〇日〇時間〇分」で表示したい

summerboot

総合スコア18

Java

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

0グッド

0クリップ

投稿2020/08/26 03:41

前提・実現したいこと

Javaで、2つの日付の差を「〇日〇時間〇分」という表記で表示するメソッドを作りたい。
より詳しくは、現在時刻と入力されたUNIX時間を比較したい。

元のソースコード

「日」のみで返す元のソースコードから改良する予定です。
ここから「時間・分」まで表示する方法で詰まっています。
よろしくお願いいたします。

java

1private String dateFormat (long unixtime){ 2  Date input = new (unixtime * 1000); 3  Date now = new Date(); 4 5  long longInput = input.getTime(); 6  long longNow = now.getTime(); 7 8  String answer = String.valueOf((longNow - longInput)/(100 * 60 * 60 * 24)) ; 9  return answer + "日" 10}

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

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

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

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

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

dodox86

2020/08/26 04:11

ご提示のコードは「日」のみを返すコードでしょうか? コンパイルが通りませんが。
guest

回答2

0

ベストアンサー

自分でひたすら計算するやり方ならこんな感じですかね。

java

1 public static void main(String[] args) { 2 long unixtime1 = new GregorianCalendar(2020, 7, 1).getTimeInMillis() / 1000L; 3 long unixtime2 = new GregorianCalendar(2020, 8, 1).getTimeInMillis() / 1000L; 4 5 System.out.println(dateFormat(unixtime1)); 6 //25日14時間18分 7 System.out.println(dateFormat(unixtime2)); 8 //5日9時間41分 9 } 10 11 private static String dateFormat(long unixtime){ 12 long longInput = unixtime; 13 long longNow = System.currentTimeMillis() / 1000L; 14 15 long dLongtime = Math.abs(longNow - longInput); 16 long days = dLongtime / (60 * 60 * 24); 17 long lDays = days * (60 * 60 * 24); 18 long hours = (dLongtime - lDays) / (60 * 60); 19 long lHours = hours * (60 * 60); 20 long minutes = (dLongtime - (lDays + lHours)) / 60; 21 22 return days + "日" + hours + "時間" + minutes + "分"; 23 }

投稿2020/08/26 05:17

編集2020/08/26 05:19
yureighost

総合スコア2183

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

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

summerboot

2020/08/26 07:35

新しいバージョンのJavaではないのでこちらを参考にさせていただきました。 無事に作成できました。ありがとうございました!
guest

0

Java 9以降であれば、新しい時刻APIが使用可能なので割と簡単に書くことができます。
(当初Java8以降と記述していましたが、 duration.toXxxPartはJava9で追加されたメソッドだったため修正しました。)

java

1import java.time.Duration; 2import java.time.Instant; 3import java.time.LocalDateTime; 4import java.time.ZoneId; 5import java.time.ZoneOffset; 6 7public class T287484 { 8 public static void main(String[] args) { 9 long unixtime = 1598210010L; // 2020-08-23T19:13:30 10 Instant instant = Instant.ofEpochSecond(unixtime); 11 LocalDateTime from = LocalDateTime.ofInstant(instant, ZoneOffset.UTC); 12 LocalDateTime to = LocalDateTime.now(); 13 14 Duration d = Duration.between(from, to); 15 16 System.out.println(unixtime); 17 System.out.println(instant); 18 System.out.println(from); 19 System.out.println(to); 20 System.out.printf("%d日%d時間%d分", d.toDaysPart(), d.toHoursPart(), d.toMinutesPart()); 21 } 22}

投稿2020/08/26 04:46

編集2020/08/26 05:13
YakumoSaki

総合スコア2027

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

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

yureighost

2020/08/26 04:51

to~Part()があるのはjava 9以降です。
YakumoSaki

2020/08/26 05:11

おわ、ありがとうございます。JavaDocを確認したところ9以降でした。 回答文修正します。ご指摘ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問