2016-07-13 12 views
4

「2016-07-13T25:50」のような日付の解析時間があり、値「2016-07-14T01:50」のLocalDateTimeを取得できますか?私はJoda timeとjava.utilだけを使用したい。24時間以上のジョーダ時間解析時間

+2

は、Java 8に組み込まれているJSR-310を使用したくありませんか? –

+1

私の要件はどこから来たのですか?これは約25時間しかありません。 99分も受け入れたいですか?または343分ですか? – GhostCat

+0

プロジェクトは1.7で書かれているので、私はJava 1.8を使用できません。 – Novros

答えて

4

あなたはジョダ時間で寛大な年表を使用することができます。

LenientChronology lenientChrono = LenientChronology.getInstance(ISOChronology.getInstance()); 
DateTimeFormatter formatter = 
    DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm").withChronology(lenientChrono); 
LocalDateTime ldt = formatter.parseLocalDateTime("2016-07-13T25:50"); 
System.out.println("lenient=" + ldt); // 2016-07-14T01:50:00.000 
2

ジョーダとJava 8 DateTime API(これは主にJodaに触発されています)がISO-8601カレンダーシステムで動作し、このフォーマットを許可しないため、カスタムパーサーを作成しないと表示されません。期間に関するWikipediaから

引用:

あるいは、組み合わされた日時表現に基づいて、持続時間の形式は基本フォーマットPYYYYMMDDThhmmssまたは拡張フォーマットPのいずれかで通信する当事者間の合意によって使用されてもよいです[YYYY] - [MM] - [DD] T [hh]:[mm]:[ss]。たとえば、上記の最初の期間は "P0003-06-04T12:30:05"となります。ただし、個々の日付と時間の値は、そのモジュラスを超えることはできません(たとえば、月の値が13、時間が25の場合は許可されません)。

利用可能なDateTimeFormatterのリストは、API docsで利用できます。

関連する問題