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 回答