現在の時刻を取得するためにZonedDateTime.now(ZoneOffset.UTC).toString()を使用しようとしています。それはうまく動作しますが、ロールオーバー(00.000Z)のときに秒/ミリ秒単位で切断されているように見えます。通常は問題ではありませんが、ElasticSearchにデータを書き込んでいます。ElasticSearchには、渡した日付(取得時刻)の厳密なマッピングがあります。Java 8 ZonedDateTime
私は何が起こっているのかと思っているかもしれませんが、いつも秒とミリ秒で日付/時刻を提供できるようにしたいと考えています。
Basicのコードスニペット(最初のパスは、ミリ秒を追加することでしたが、秒もおそらく取り残される可能性が表示されます):
:def utcDate = ZonedDateTime.now(ZoneOffset.UTC)
def utcDateStr = utcDate.toString()
utcDateStr = utcDateStr.contains(".") ? utcDateStr
: utcDateStr.replace("Z","").concat(".000Z")
それはほとんど常にある、それは以下の形式になりたいです
2016-06-16T05:43:07.624Z
'toString()を呼び出すと秒/ミリ秒を切り捨てると言うなら、もっと明確になります。そうでなければ' now() 'のように聞こえます。 –
ああ、良い点@JonSkeet。あなたは正しいです、私は質問を編集/修正します – scarpacci