JavaFXアプリケーションを作成していますが、新しいリストセルが作成されるたびにタイムラベルを使用する必要があります。パラメーターとしてString
をとるLabelコンストラクターに、現在の時刻の文字列をHH:MM
形式で直接配置する必要があります。
Java.util.Date
を見つけて使用しました:
Label timeLabel = new Label(new SimpleDateFormat("HH:MM").format(new Date()));
しかし、間違ったタイムゾーンが表示されるため、Java.time
およびLocalTime
クラスを使用します。
1行で同じ文字列の結果を達成する方法はありますか?ご協力ありがとうございました :)
新しいアプリケーションでJava 8タイプ(Java.time)を使用することをお勧めします。最初に DateTimeFormatter
を作成できます。
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm");
そして、現在の時刻を取得してフォーマットします。
Label timeLabel = new Label(LocalTime.now().format(dtf));
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
フィールドに配置することをお勧めします。この方法では、行が実行されるたびに作成されるのではなく、一度だけ作成されます。このアプリケーションではほとんど問題になりませんが、最初から良い習慣を使用する方が良いでしょう。
次のようなものを試してください:
Label timeLabel = new Label(String.format("%tR", LocalTime.now()));
参照: http://docs.Oracle.com/javase/8/docs/api/Java/util/Formatter.html
LocalTimeインスタンスをいくつかの方法で作成できます。最初の方法は、現在の正確な時刻を表すLocalTimeインスタンスを作成することです。これはどのように見えるかです:
LocalTime localTime = LocalTime.now();
LocalTimeオブジェクトを作成する別の方法は、特定の時間、分、秒、ナノ秒からオブジェクトを作成することです。これはどのように見えるかです:
LocalTime localTime2 = LocalTime.of(21, 30, 59, 11001);
また、パラメータとして時間と分、または時間、分、秒のみをとるof()メソッドの他のバージョンもあります。
次のメソッドを使用して、LocalTimeオブジェクトの時間、分、秒、ナノ秒にアクセスできます。
これを確認してください、それは私をたくさん助けました http://tutorials.jenkov.com/Java-date-time/localtime.html