私はjava.time.Instantに文字列の日付形式を変換したいです
日付を解析している間、私は例外を取得しています。
java.lang.IllegalArgumentException: Too many pattern letters: s
私は、文字列から日付への最初の変換のためのコードの下に使用しています。
String string = "2018-07-17T09:59:51.312Z";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYY-MM-DD'T'hh:mm:ss.sssZ", Locale.FRANCE);
LocalDate date = LocalDate.parse(string, formatter);
System.out.println(date);
:私は、「タイムスタンプ」を変換したい"2018-07-17T09:59:51.312Z"
ISO 8601形式でフォーマット時にYYYY-MM-DDThh:mm:ss.sssZ
UTCタイムゾーンインチ
チェック日付への変換Java文字列は、しかし、動作していません。
TL; DR
java.time.Instantに変換、文字列の日付形式
書式設定のパターンをスキップします。ただ、解析します。
Instant.parse( "2018-07-17T09:59:51.312Z" )
ISO 8601
示すようにはい、あなたは間違ったフォーマットパターンを使用し最初の回答。
しかし、あなたは、フォーマットパターンを指定する必要はありませんすべてのを。あなたの入力文字列が標準であるISO 8601形式。java.timeの文字列を生成/解析するときのクラスは、デフォルトではISO 8601の形式を使用します。
Z
最後には意味UTCを、そして「ズールー」と発音されます。
Instant instant = Instant.parse( "2018-07-17T09:59:51.312Z" ) ;
java.time
java.timeのフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは面倒古い取って代わるレガシーのような日付時刻クラスをjava.util.Date
、Calendar
、& SimpleDateFormat
。
ジョダタイムプロジェクトは、今でメンテナンスモードへの移行をアドバイスjava.timeのクラス。
より多くを学ぶために、参照Oracleのチュートリアルを。そして、多くの例および説明のためにスタックオーバーフローを検索します。仕様は、JSR 310。
あなたは交換してもよいjava.timeのデータベースにオブジェクトを直接。使用するJDBCドライバに準拠するJDBC 4.2以降。文字列を使用する必要はありません、が不要java.sql.*
なクラス。
どこjava.timeクラスを取得するには?
- Java SEの8、 Java SEの9、 Java SEの10、 Java SEの11、以降-同梱の実装と標準のJava APIの一部。
- Javaの9は、いくつかのマイナーな機能や修正を追加します。
- Java SEの6と Java SEの7
- java.timeの機能の多くは、中のJava 6&7にバックポートされThreeTen-バックポート。
- アンドロイド
- 実装バンドルのAndroidのそれ以降のバージョンjava.timeのクラス。
- 以前のアンドロイド(<26)の場合、ThreeTenABPのプロジェクトは、適応ThreeTen-バックポート(上記参照します)。参照してください... ThreeTenABPを使用する方法。
ThreeTen-エクストラプロジェクトでは、追加のクラスでjava.timeを拡張します。このプロジェクトは、java.timeに将来の追加のための試験場です。あなたはここにいくつかの有用なクラスのような見つけることがInterval
、YearWeek
、YearQuarter
、および多くを。