2

カレンダーの日付 before() および after() メソッドを使用して比較できるように、BST(現在の日付) と GMT の 2 つの日付をどのように変換しますか? BST が英国のサマータイムを指しているかどうかはわかりません。英語設定のラップトップで実行しています。一方が他方より大きいか等しいかを比較する最善の方法がわかりません。カレンダーの日付の after() および before() メソッドを使用して、タイムゾーンが問題になると思います。2つのカレンダーに基づいて同等性をチェックしていました。

日付を比較したいので、グレゴリオ暦を使用しています。3 つのグレゴリオ暦の日付があり、それぞれの HOURS_OF_DAY から、最初の日付から 78、2 番目の日付から 48、3 番目の日付から 24 を引きました。これらの日付は GMT です。次に、現在の日付を取得します。これは BST です。現在の日付、つまり予約日が 3 つの日付、つまり 78 時間、48 時間、24 時間以内にあるかどうかを判断したいと考えています。私は Java.Util.Date でこれを行うことを望んでいます

感謝して受け取った助け

4

2 に答える 2

2

どうですか:

Calendar calBst = new GregorianCalander();
calBst.setDate(date1);
calBst.setTimezone(TimeZone.getTimeZone("BST");

Calendar calGmt = new GregorianCalander();
calGmt.setDate(date2);
calGmt.setTimezone(TimeZone.getTimeZone("GMT");
calBst.before(calGmt);
于 2012-04-06T14:30:15.570 に答える
0

私は同じ問題を抱えていて、答えを見つけることは明らかではありませんでした。現在、このソリューションを本番環境で使用しており、正常に動作しています。jodatimeライブラリに基づいています

public static Date convertDateTimeZone(Date date, TimeZone currentTimeZone, TimeZone newTimeZone) {
    return convertJodaTimezone(new LocalDateTime(date), DateTimeZone.forTimeZone(currentTimeZone), DateTimeZone.forTimeZone(newTimeZone));
}

public static Date convertDateTimeZone(Date date, TimeZone newTimeZone) {
    return convertDateTimeZone(date, null, newTimeZone);
}

public static Date convertJodaTimezone(LocalDateTime date, String srcTz, String destTz) {
    return convertJodaTimezone(date, DateTimeZone.forID(srcTz), DateTimeZone.forID(destTz));
}

public static Date convertJodaTimezone(LocalDateTime date, DateTimeZone srcTz, DateTimeZone destTz) {
    DateTime srcDateTime = date.toDateTime(srcTz);
    DateTime dstDateTime = srcDateTime.withZone(destTz);
    return dstDateTime.toLocalDateTime().toDateTime().toDate();
}

最初の方法を使用して日付を特定の共通タイムゾーンに変換し、比較を行うだけです。

タイムゾーン インスタンスを取得するには、次の手順を実行する必要があります。

TimeZone.getTimeZone("BST");
于 2012-04-06T14:32:02.110 に答える