0

次のような状況があります:
特定の日付に開始し、翌日に終了するアクティビティを計画するために、24u 時間の制約を超える終了日/時刻の値が指定されています。
例: 開始日 = 2013-01-01 23:22:00 および終了日 = 2013-01-01 26:22:00

解決策は、JodaTime が提供する寛大な方法を使用することだと思いました。しかし、それは私が期待したように動作しませんでした。だから私はいくつかのテストコードを提供して、私の混乱を説明しました:

public static void main(String[] args){

    String lenientDate = "2013-01-01 26:22:00";
    String format = "YYYY-MM-DD hh:mm:ss";
    try{

            System.out.println("Lenient Date:" + lenientDate);
            DateFormat sdf = new SimpleDateFormat(format);
            sdf.setLenient(true);
            System.out.println("Java.Date output:" + sdf.parse(lenientDate));

            DateTime dt = new DateTime(sdf.parse(lenientDate));
            System.out.println("hybrid calls:" + dt.toString());

            DateTimeFormatter parseFormat = DateTimeFormat.forPattern(format);
            Chronology lenient = LenientChronology.getInstance(GregorianChronology.getInstance());
            parseFormat = parseFormat.withChronology(lenient);

            DateTime dateTime = parseFormat.parseDateTime(lenientDate);

            System.out.println("All Joda calls:" + dateTime.toString());

            System.out.println("My expected values: " + dateTime.minusHours(12).toString());

    }catch(Exception e){
        System.out.println("Something went wrong!");
    }

} 

結果は次のとおりです。

Lenient Date:2013-01-01 26:22:00
Java.Date output:Mon Dec 31 02:22:00 CET 2012
hybrid calls:2012-12-31T02:22:00.000+01:00
All Joda calls:2013-01-02T14:22:00.000+01:00
My expected values: 2013-01-02T02:22:00.000+01:00

ライブラリ: Joda 2.2; Java: JDK 1.7; プラットフォーム: Mac OS X

誰かが日付/時刻変換における寛大さの正しい動作を説明できますか?

4

1 に答える 1