web-dev-qa-db-ja.com

JodaTime DateTime、ISO8601 GMT日付形式

次の形式を取得するにはどうすればよいですか。

2015-01-31T00:00:00Z

(ISO8601 GMT日付形式)

Joda時間(Java)のDateTimeオブジェクトが不足していますか?例えば。

DateTime time = DateTime.now();
String str = // Get something like 2012-02-07T00:00:00Z

ありがとう! :)

25

JODA Javadoc は、toStringDateTimeがISO8601で日付を出力することを示します。すべての時間フィールドをゼロにする必要がある場合は、次のようにします。

final DateTime today = new DateTime().withTime(0, 0, 0, 0);
System.out.println(today);

出力文字列にミリ秒が含まれます。それらを取り除くには、@ jgmがここで提案するフォーマッタを使用する必要があります。

この投稿で求めているフォーマットと一致させる場合は(リテラルZ文字を使用)、次のように機能します。

System.out.println(today.toString(DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss'Z'")));

値をUTCにする必要がある場合は、次のように初期化します。

final DateTime today = new DateTime().withZone(DateTimeZone.UTC).withTime(0, 0, 0, 0);
41
laz

@jgmドキュメントでは、ISODateTimeFormat.dateTime()が記述されています

「T」(yyyy-MM-dd'T'HH:mm:ss.SSSZZ)で区切られた完全な日付と時刻を組み合わせたフォーマッタを返します。

しかし、タイムゾーンを設定した場合、例えば、

DateTimeFormatter fmt = ISODateTimeFormat.dateTime();  
System.out.println(fmt.print(new DateTime().toDateTime(DateTimeZone.UTC)));

zで終わります。

8
okwap

ISODateTimeFormat を使用します

DateTime dt = new DateTime();
DateTimeFormatter fmt = ISODateTimeFormat.dateTimeNoMillis();
String str = fmt.print(dt);
3
mantrid

DateTimeFormatterを設定:

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZ");
formatter.print(time);
2
jgm