私は、1995年1月1日から与えられた日付までの何日間違いである親戚日付を計算したいと思いますか?私は同時に夏時間を処理する必要があります。ここでは、コードです:Java相対日付を計算し、夏時間を同時に処理する方法は?
boolean isDST = TimeZone.getDefault().inDaylightTime(new java.util.Date());
しかし、それは唯一のシステムからの既定の時間を取得します。
public String convertToRelative(String endDate) throws ParseException {
String relativeDate;
String baseDate = "19570101";
boolean isDST = TimeZone.getDefault().inDaylightTime(new java.util.Date());
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(baseDate));
long time1 = cal.getTimeInMillis();
cal.setTime(sdf.parse(endDate));
long time2 = cal.getTimeInMillis();
if (isDST) {
long between_days = (time2 - time1 - 3600000)/(1000*3600*24);
int relative = Integer.parseInt(String.valueOf(between_days));
relativeDate = String.valueOf(relative + 1);
} else {
long between_days = (time2 - time1)/(1000*3600*24);
int relative = Integer.parseInt(String.valueOf(between_days));
relativeDate = String.valueOf(relative + 1);
}
return relativeDate;
}
コードからは、あなたは時間がで夏時間である場合、私がチェック見ることができます。私の質問は、どのように私は指定された日付を確認することができます夏時間の最初の計算部分です。ニュージーランドのタイムゾーンを使用しています。ありがとうございました。
:https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html#until-java.time.temporal.Temporal-java.time.temporal.TemporalUnit-
を次のコードは、あなたがやろうとしている計算のお手伝いをする必要がありますか? – ngreen
何をしようとしているのかはっきりしていませんが、複雑すぎるようです。それぞれの正しいタイムゾーンを使用して開始エンドエンドを 'Date'に変換し、その差を計算します。 – Henry