質問

Date オブジェクトを、解析して Date オブジェクトに戻すこともできる、読み取り可能な文字列 (たとえば、2009 年 10 月 22 日 21:13:14) に保存したいと考えています。

多くのことを試しましたが、解析と書式設定に DateFormater を使用するのが最善でしたが、これには挫折がありました。日付を書式設定すると、秒の情報が失われます。それをフォーマットして秒を表示するオプションがあるかどうかを見つけようとしました(Dateオブジェクトで許可される解像度であるため、ミリ秒レベルまで表示できればさらに良いでしょう)が、不十分でした。

何か案は?

他のヒント

SimpleDateFormat をフォーマットし、解析することができます二、さらにはミリ秒を含め、非常に単純なパターン方式に基づいて日付ます。

他の回答は、すべて良いです。

しかし、この種のものを行うときのしてくださいのの形式を選択種類の適切の文字列....としてコード化されたとき、「YYYY / MM / DD HH:MM: ssは」結構です。ソフトウェアエンジニアは明らかに、便利な方法でソートしない日付形式を選ぶときには、常に私をastoundsます。

あなたは、将来的には、いくつかの離れた場所であなたの仲間の開発者に多くの痛みを節約できます - 良いカルマと考える: - )

オフトピック少し、私はいつもにDateFormatとSimpleDateFormatのは、スレッドセーフではありません人を思い出させる必要性を感じて! Sunのマニュアルには、これを明確に述べているが、私は

...人々は静的でのSimpleDateFormatスティック野生で出たコードを見つけておきます

ISO8601

使用 ISO8601 形式です。

  • この柔軟な秒数秒がある場合でも残してあれば0になります。
  • この標準で以ツール形式および構文解析します。大直列化のためのストレージやデータicです。
  • このようになりま 2009-10-22T21:13:14, んとの合作とでも言うべきか人間が読むもの T その中間の開始を意味するのが感じ常生活をするものではありません。
  • 文字列のソートが適正にmikera要求され 他の答え, どの年の桁の範囲から1000を通して-9999に表示する
  • 授業の java.time, 現代Javaの日付と時刻のAPIでは、どのJoda時間解析のISO8601としてそのデフォルトではなく、明示的なフォーマッタを同一フォーマットから toString ます。

緩やかなデモ用 java.time:

LocalDateTime dateTime = LocalDateTime.of(2009, 10, 22, 21, 13, 14);
String readableString = dateTime.toString();
System.out.println(readableString);
LocalDateTime parsedBack = LocalDateTime.parse(readableString);
System.out.println(parsedBack);

この版画につい線:

2009-10-22T21:13:14
2009-10-22T21:13:14

後者 System.out.println() コ暗黙のうちに電話 toString() 一度こんなに驚きです。

もう少し単純にして、他のほとんどの回答に含まれる独自の DateFormat を作成する必要がない場合は、デフォルトの形式を利用できます。 java.time.Instant:

(new Date()).toInstant.toString();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top