2017-06-22 11 views
4

私はJavaFXアプリケーションを作成しています。新しいリストセルが作成されるたびに、時間ラベルを使用する必要があります。現在の時刻の文字列を、StringをパラメータとするLabelコンストラクタに直接、HH:MM形式で格納する必要があります。Javaのローカル時刻の書式設定

私が発見し、使用java.util.Date年代:

Label timeLabel = new Label(new SimpleDateFormat("HH:MM").format(new Date())); 

をが、それは間違った時間帯を示し、私はjava.timeLocalTimeクラスを使用するつもりです。

同じ文字列の結果を1行に収める方法はありますか? はあなたの助けをありがとう:)

答えて

10

Java 8のタイプ(java.time)を新しいアプリケーションで使用する方が良いでしょう。

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm"); 

そして、現在の時刻を取得し、それをフォーマットする:あなたは、最初のDateTimeFormatter作成することができますあなたはいくつかの方法でにLocalTimeインスタンスを作成することができます

Label timeLabel = new Label(LocalTime.now().format(dtf)); 
+3

良い答え。私は通常、タイムゾーンを指定します。たとえば、 'LocalTime.now(ZoneId。systemDefault()) '。 1つは、現在の時刻を取得することはタイムゾーンに依存する操作であることが明らかです。 2つは、読者とあなた自身に、ロケールの選択について考えさせて、断ったことを伝えます。 –

+0

それはもちろん... "タイムゾーンの選択..."であったはずです。 @OleVV –

5
LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm")) 

は(これは、デフォルトのロケールを使用する多くのためhttps://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ofPattern-java.lang.String-が表示されますが)。

しかし、より良い方法は、フォーマッタをstatic finalフィールドに入れることです。この方法では、行が展開されるたびにではなく、一度作成されます。このアプリケーションではほとんど間違いありませんが、最初から良い習慣を使用する方がよいでしょう。

0

。最初の方法は、現在の正確な時刻を表すLocalTimeインスタンスを作成することです。ここではそれがどのように見えるかです:

LocalTime localTime = LocalTime.now(); 

にLocalTimeオブジェクトを作成する別の方法は、時間、分、秒およびナノ秒の具体的な金額から、それを作成することです。ここではそれがどのように見えるかです:

LocalTime localTime2 = LocalTime.of(21, 30, 59, 11001); 

また、唯一のパラメータとして、時間と分、または時間、分、秒を要するの()メソッドの他のバージョンがあります。

あなたはこれらのメソッド使用にLocalTimeオブジェクトの時間、分、秒およびナノ秒にアクセスすることができます。

  • getHour()
  • getMinute()
  • getSecond()
  • getNanoを()

それはhttp://tutorials.jenkov.com/java-date-time/localtime.html

alot-私を助けてくれ、これをチェック
関連する問題