26

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

2015-01-31T00:00:00Z

(ISO8601 GMT 日付形式)

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

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

ありがとう!:)

4

4 に答える 4

43

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

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);
于 2013-02-07T14:12:29.107 に答える
9

@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で終わります。

于 2013-04-25T07:06:54.977 に答える
5

ISODateTimeFormatを使用する

DateTime dt = new DateTime();
DateTimeFormatter fmt = ISODateTimeFormat.dateTimeNoMillis();
String str = fmt.print(dt);
于 2013-02-07T13:59:17.387 に答える
2

次を設定しますDateTimeFormatter

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZ");
formatter.print(time);
于 2013-02-07T13:56:44.710 に答える