2017-08-09 7 views
1

午前10時、午後12時30分、午後2時47分、午前1時9分、午後5時などの特定の時間を入力するようにユーザーに依頼します。 Scannerを使用してユーザーの入力を取得します。与えられた時間(String)をLocalTimeに変換するには?

StringLocalTimeオブジェクトに解析/変換するにはどうすればよいですか?私はそれを可能にするJavaの組み込み関数はありますか?

+0

これは 'LocalDateTime'ではなく、' LocalTime'だけです。 – Kayaman

+0

私はお詫び申し上げます。私はそれを言い直しましょう。 – SVCS1994

答えて

3

だけjava.time.format.DateTimeFormatterを使用します:

パターン説明する
DateTimeFormatter parser = DateTimeFormatter.ofPattern("h[:mm]a"); 
LocalTime localTime = LocalTime.parse("10AM", parser); 

:1〜12日の午前/午後の時間(:

  • hをこれを実装するコードを以下に示します)、1桁または2桁
  • []:任意のセクションの区切り文字(内部はすべてオプションです)
  • :mm:2桁
  • aと分続い:文字:AM/PM
  • ための指示

これは、すべての入力に対して動作します。

+1

Obrigado Hugo。私はあなたのようにスマートでした。素晴らしい一日をお過ごしください – SVCS1994

+0

お手伝いしてうれしいです! –

0

希望すると、これが役立ちます。 DateTimeFormatterLocalDateTime以下の例のように解析するといいと思います。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE, MMM d, yyyy HH:mm:ss a"); 

    String date = "Tuesday, Aug 13, 2017 12:10:56 PM"; 
    LocalDateTime localDateTime = LocalDateTime.parse(date, formatter); 
    System.out.println(localDateTime); 
    System.out.println(formatter.format(localDateTime)); 

出力

2017-08-13T12:10:56

2017年8月13日(火曜日)12時10分56秒PM

同様の記事がJava 8 - Trying to convert String to LocalDateTime

0

だろう時間だけを解析する場合は、構文解析をLocalTimeに試してください。

DateTimeFormatter parseFormat = new DateTimeFormatterBuilder().appendPattern("hh[:mm]a").toFormatter(); 
LocalTime localTime = LocalTime.parse(timeValue, parseFormat); 
+3

これは、12時30分AMのようにhh:mmaの形式を厳密に尊重している時間にのみ有効ですが、5AMまたは2:12 PM ... – jeanr

+0

はい、正しいです。 –

関連する問題