2016-09-30 10 views
0

SimpleDateFormatを使用して6桁の文字列をTimeに変換しようとしていますが、変換後に01.01.1970の日付が取得されています。どのようにすれば、日付なしで時間変数に格納された時間を取得するだけですか?は、01.01.1970のデータがない時間を時間変数に保存します。

コード

String timeString = "004500"; 
SimpleDateFormat formater = new SimpleDateFormat("hhmmss"); 
Date time= formater.parse(timeString); 
+0

できません。 Date変数には常に日付部分が格納されます – Jens

+1

'Date'は** lterally ** '01.01.1970 UTC'からわずかミリ秒です。あなたが望むことをする方法は絶対にありません。 ['LocalTime'](https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html)を使用してください。 –

+1

'Date'オブジェクトはちょうど時間(時、分、秒)を格納するのには適していません。代わりに 'java.time.LocalTime'クラスを使用してください。 – Jesper

答えて

2

あなたが望むものであるにLocalTimeを使用することができます。あなただけが()method LocalTime.parseを使用することができます解析する時間を持っている場合は

String str = "1986-04-08 12:30"; 
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); 
LocalDateTime dateTime = LocalDateTime.parse(str, formatter); 
LocalTime time - dateTime.toLocalTime(); 

:あなたはこのような標準的な日付を解析することができます。

これはJava 8以降でのみ使用可能です。また、Java 8をまだ使用していない場合は、Joda Timeを依存関係として追加することもできます。

+0

ok私はあなたの提案で編集しました – discipliuned

+0

ありがとう。今それは明確です:) – Jens

+0

多くのjava.time機能は、ThreeTen-BackportプロジェクトのJava 6&7にバックポートされ、さらにThreeTenABPプロジェクトでAndroidに適応しています。 Joda-Timeプロジェクトはメンテナンスモードにあり、チームはjava.timeへの移行をアドバイスしています。 –

関連する問題