後付けを使用して次のように日付を読み取ろうとすると、日付形式を適切に設定できません。
2015-08-29T11:22:09.815479Z
私が設定している [〜#〜] gson [〜#〜] コンバーターは次のようなものです:
GsonConverter gsonConverter = new GsonConverter(
new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSz")
.create()
);
問題の手がかりはありますか?
Java Date はミリ秒の精度なので、次のようにGson
オブジェクトを作成しています:
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
.create();
もちろん、このような場合、SSS
を付けてもSSSSSS
を付けても、マイクロ秒は切り捨てられます。また、変換された文字列の最後の文字は常にZ
であると想定されています。
パターンが機能しない理由を説明するために、z
(小文字のz)を使用しました。これは、ドキュメントによれば 一般的なタイムゾーン を表します(例:Pacific Standard Time; PST; GMT-08:00
)。さらに、Z
(大文字のZ)を使用する場合、 RFC 822タイムゾーン を表すため、これも機能しません(例:-0800
)。
Z
の代わりにタイムゾーンオフセットがある別のシナリオ(例:-08
、-0800
、または-08:00
)、X
、XX
、またはXXX
を使用して ISO 8610タイムゾーン を表すことができます。しかし、これにはJava 7または8が必要です(AndroidはJava 8と現時点では互換性がないと思います。
別の方法は、独自のGson
Serializer and Deserializer ;を記述することです。私は試していませんが。
これも一見の価値があります Java.sql.TimestampGson
でもサポートされ、より細かい精度(ナノ秒)を持つクラスですが、これまでに調べたことのないオプションでもあります。