web-dev-qa-db-ja.com

javaでの現地時間のフォーマット

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

Java.util.Dateを見つけて使用しました:

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

しかし、間違ったタイムゾーンが表示されるため、Java.timeおよびLocalTimeクラスを使用します。

1行で同じ文字列の結果を達成する方法はありますか?ご協力ありがとうございました :)

9
Daniel Piskorz

新しいアプリケーションでJava 8タイプ(Java.time)を使用することをお勧めします。最初に DateTimeFormatter を作成できます。

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

そして、現在の時刻を取得してフォーマットします。

Label timeLabel = new Label(LocalTime.now().format(dtf));
22
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フィールドに配置することをお勧めします。この方法では、行が実行されるたびに作成されるのではなく、一度だけ作成されます。このアプリケーションではほとんど問題になりませんが、最初から良い習慣を使用する方が良いでしょう。

7
Alexey Romanov

次のようなものを試してください:

Label timeLabel = new Label(String.format("%tR", LocalTime.now()));

参照: http://docs.Oracle.com/javase/8/docs/api/Java/util/Formatter.html

2
Usagi Miyamoto

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

LocalTime localTime = LocalTime.now();

LocalTimeオブジェクトを作成する別の方法は、特定の時間、分、秒、ナノ秒からオブジェクトを作成することです。これはどのように見えるかです:

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

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

次のメソッドを使用して、LocalTimeオブジェクトの時間、分、秒、ナノ秒にアクセスできます。

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

これを確認してください、それは私をたくさん助けました http://tutorials.jenkov.com/Java-date-time/localtime.html

0
Kobi Lehrer