Java 7で2つの日付の間の日数を計算する方法を多く見てきましたが、うるう年が正しく含まれていないことがわかりました。Java 7閏年を正しく計算した2つの日付の間の日数を取得する
私はこの例を見て、どうやら閏年ましたが含まれていません。
Calculating days between two dates with in java
をだから私はジョダ時間とJavaを使用せずに日数を取得する方法を正しいJavaコードを見てみたいです8?
Java 7で2つの日付の間の日数を計算する方法を多く見てきましたが、うるう年が正しく含まれていないことがわかりました。Java 7閏年を正しく計算した2つの日付の間の日数を取得する
私はこの例を見て、どうやら閏年ましたが含まれていません。
Calculating days between two dates with in java
をだから私はジョダ時間とJavaを使用せずに日数を取得する方法を正しいJavaコードを見てみたいです8?
この算術はどうですか?
package com.example;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DayDifference {
public static void main(String[] args) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d1 = sdf.parse("2016-02-28");
Date d2 = sdf.parse("2016-03-01");
long diff = (d2.getTime() - d1.getTime())/(1000 * 60 * 60 * 24);
System.out.println("diff: " + diff);
}
}
これは2を出力するので、うるう年に適しています。
更新:それはあまりにも夏時間を処理するので、あなたは+ 12hをハックとの優れているコメントAndreas年代によると:(d2.getTime() - d1.getTime() + 1000 * 60 * 60 * 12)/(1000 * 60 * 60 * 24)
しかし、夏時間を越えるときには機能しません。 '2016-03-13'と' 2016-03-14'(America/New_York)の間に '0'日があるとします。 – Andreas
入力は純粋な日付なので、DSTは決して12時間以上になることはありません。これは、除算を丸めて半日を追加することで修正できます: '(d2.getTime() - d1.getTime()+ 1000 * 60 * 60 * 12)/(1000 * 60 * 60 * 24) ' – Andreas
私のマシン(CET/CEST)に '1'が与えられます。とにかく、我々は「一日の違い」とみなすものについて完全な仕様が必要です。例えば。 '2016-03-13 23:12:05'と' 2016-03-14 00:17:44'の違いは? –
最も簡単な方法は、ユリウス日にあなたのグレゴリオ暦の日付を変換することです数。これは[Wikipediaで](https://en.wikipedia.org/wiki/Julian_day#Converting_Julian_or_Gregorian_calendar_date_to_Julian_day_number)に記載されています。両方の日のユリウス日を取得したら、それを引きます。 –
いいえ、申し訳ありませんが、最も簡単な方法は、JodatimeまたはJava 8を使用することです。 –
私はJava 7に興味があります。私はJava 7を使用しています。 – DarioBB