あなたのフォーマット、YYYY-mm-dd'T'HH:MM:ss'Z'
正しくありません。この形式で間違っていることをすべて話し合いましょう。
-
Y
を使用しましたy
の代わりに : 記号Y
Week year
に使用されますy
Year
に使用されます 。 year-of-の違いを確認してください時代と週ベースの年? 詳細については、こちらをご覧ください。 -
mm
を使用しました 月の場合: 月の正しい記号はM
です。 。 -
MM
を使用しました 数分間: 分の正しい記号はm
です。 。 -
Z
を同封しました 一重引用符で囲みます: シンボルZ
Time zone
に使用されます 一方、'Z'
文字リテラルに他なりません。おそらく、+00:00
のタイムゾーンオフセットをフォーマットする必要がありますZ
として このためには、実際にはX
を使用する必要があります 。
したがって、正しい形式は次のとおりです。
yyyy-MM-dd'T'HH:mm:ssX
推奨される形式のデモ:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX", Locale.ENGLISH);
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
System.out.println(sdf.format(date));
}
}
出力:
2021-01-14T08:13:01Z
java.util
の日時APIに注意してください およびそれらのフォーマットAPI、SimpleDateFormat
古く、エラーが発生しやすいです。それらの使用を完全に停止し、最新の日時API
。
- 何らかの理由で、Java6またはJava7に固執する必要がある場合は、ThreeTen-バックポート java.timeのほとんどをバックポートします Java6および7の機能。
- Androidプロジェクトで作業していて、Android APIレベルがまだJava-8に準拠していない場合は、脱糖によって利用可能なJava8以降のAPI
および
AndroidプロジェクトでThreeTenABPを使用する方法> 。
Date#toInstant
java.util.Date
を変換します java.time.Instant
へのオブジェクト(レガシータイプ) (モダンタイプ)。 Instant
タイムライン上の瞬間的なポイントを表し、ほとんどのJSON操作に十分なはずです。 Instant#toString
ISO-8601標準
に準拠したUTCタイムゾーンオフセットを含む日時文字列を返します 。
デモ:
import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
Instant instant = date.toInstant();
// Print the value of instant#toString
System.out.println(instant);
OffsetDateTime odt = instant.atOffset(ZoneOffset.UTC);
System.out.println(odt);
// Custom format
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssX", Locale.ENGLISH);
System.out.println(dtf.format(odt));
}
}
出力:
2021-01-14T08:28:35.659Z
2021-01-14T08:28:35.659Z
2021-01-14T08:28:35Z