0

2 つの日付間の残りの日数を計算するような要件があります。それは私にとってはうまくいっています。しかし、問題は、ビルドを英国に送信したときに、インドに比べて 1 日少なく表示されていることです (例: インド: 215 日、英国: 214 日)。以下のコードを使用しています。

public static int noOfDays(String currDate, String tarDate){
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    Date date1 = null;
    Date date2 = null;

    try {
        date1 = sdf.parse(currDate);
        date2 = sdf.parse(tarDate);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return (int)( (date2.getTime() - date1.getTime()) / (1000 * 60 * 60 * 24));
}   

現在の日付を取得するには:

public static String getcurrentdate()
{
    Calendar now = Calendar.getInstance();

    int month = now.get(Calendar.MONTH) + 1;
    int year = now.get(Calendar.YEAR);
    int day = now.get(Calendar.DATE);
    return day+"/"+month+"/"+year;
}

そして、Calendar now = Calendar.getInstance(); だと思います。ローカルタイムゾーンのインスタンスのみを提供します。それが正しい場合、どの場所でも同じ結果が得られるはずですが、結果は異なるようです。この問題を解決するのを手伝ってください。

ありがとう、ガネーシャ

4

3 に答える 3

1

Calender クラスの TimeZone を設定する必要があります。あなたは書くことによってそうすることができます:

Calender.setTimeZone(timeZone);

これを使用して、アプリが実行されている場所の TimeZone を取得できます。

TimeZone.getDefault();
于 2012-11-27T10:08:36.490 に答える
1

時刻の計算を保存して実行する場合は、すべてのタイムスタンプを UTC で保存する必要があります。次に、タイムゾーンを明示的に UTC に設定します。
現地時間をディスプレイに表示する必要がある場合は、表示する前にすぐに Utc タイムスタンプを変換する必要があります。データベースに現地時間を保存しないでください。
localtime が必要な場合は、utc 時間とともに追加のタイムゾーン情報を保存する必要があります。

于 2012-11-27T10:01:42.693 に答える
0

日付の計算にはJodaTimeライブラリを使用し、常に日付をUTCで保存します。

于 2012-11-27T10:04:03.683 に答える