1

Util クラスで、現在の時刻を日付形式で返す静的メソッドを作成したいと考えています。だから私は以下のコードを試しましたが、常に同じ時間を返します。

private static Date date = new Date();
private static SimpleDateFormat timeFormatter= new SimpleDateFormat("hh:mm:ss a");

public static String getCurrentDate() {
    return formatter.format(date.getTime());
}

Util クラスのインスタンスを作成せずに、特定の形式で更新時間を取得するにはどうすればよいですか。出来ますか。

4

1 に答える 1

7

同じ Date オブジェクトを再利用するため、常に同じ時間を取得できます。クラスが解決されると、Date オブジェクトが作成されます。使用するたびに現在の時刻を取得するには:

private static SimpleDateFormat timeFormatter= new SimpleDateFormat("hh:mm:ss a");

public static String getCurrentDate() {
    Date date = new Date();
    return timeFormatter.format(date);
}

あるいは

public static String getCurrentDate() {
    Date date = new Date();
    SimpleDateFormat timeFormatter= new SimpleDateFormat("hh:mm:ss a");
    return timeFormatter.format(date);
}

SimpleDateFormat はスレッドセーフではないためです。

現在の時刻が必要なだけなので、新しい日付を作成する必要さえありません。

public static String getCurrentDate() {
    SimpleDateFormat timeFormatter= new SimpleDateFormat("hh:mm:ss a");
    return timeFormatter.format(System.currentTimeMillis());
}

出力だけが必要で、解析する機能が必要ない場合は、使用できます

public static String getCurrentDate() {
    return String.format("%1$tr", System.currentTimeMillis());
}
于 2012-09-15T05:52:47.047 に答える