2017-02-15 10 views
0

私は最近、私が作業しているメタデータにラベルのないフィールドを受け取りました。日付と時刻の長い文字列をJavaのタイムスタンプ形式に変換する

その中のデータはすべて、次のようになります。

20160305111235.703000 

20101030120530.703000 

私は、彼らは日付と時刻の組み合わせによって作られただけで長い文字列であることを疑います。私のプロジェクトでこれらの文字列を使用するために

最良の方法は、タイムスタンプ形式にこのような文字列を変換しているように見える「YYYY-MM-DD HH:MM:SS.SSS」

良い方法はありますこの形式に変換するには?私は文字列に " - "と ":"を追加するために部分文字列を使用していますが、より良い方法がありますか?

ありがとうございました。

答えて

1

SimpleDateFormatを使用してください。リンクによる説明があります。また、それを使用する方法の例の多くのためのGoogleをすることができます。

データの値をDateに変換し、SimpleDateFormatを使用してフォーマットするだけで済みます。

+0

FYI、古い 'SimpleDateFormat'、[' Calendar'(http://docs.oracle.com/javase/8 /docs/api/java/util/Calendar.html)と['Date'](http://docs.oracle.com/javase/8/docs/api/java/util/Date.html)のクラスは[レガシー](https://en.wikipedia.org/wiki/Legacy_system)。 [java.time](https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html)クラスによってサポートされています。 –

+0

@BasilBourque [java7とほぼ同じです](https://plumbr.eu/blog/java/java-version-and-vendor-data-analyzed-2016-edition) –

+0

@ScaryWombat java.timeの機能の多くは次のとおりです。 [ThreeTen-Backport](http://www.threeten.org/threetenbp/)のJava 6およびJava 7にバックポートされ、[ThreeTenABP](https://github.com/JakeWharton/ThreeTenABP)のAndroidにさらに適合しました)。 –

2

Java 8以降に組み込まれたjava.timeクラス:LocalDateTimeおよびDateTimeFormatterを使用してください。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddkkmmss.SSSSSS") ; 
LocalDateTime ldt = LocalDateTime.parse("20160305111235.703000", formatter); 

コンソールにダンプします。

System.out.println(ldt); 

2016-03-05T11:12:35.703

関連する問題