社区首页 >问答首页 >静态方法总是在同一时间返回

静态方法总是在同一时间返回
EN

Stack Overflow用户
提问于 2012-09-15 05:49:28
回答 1查看 1.7K关注 0票数 1

我想在我的Util类中创建一个静态方法,它将以日期格式返回当前时间。因此,我尝试了下面的代码,但它总是返回相同的时间。

代码语言:javascript
代码运行次数:0
复制
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类的实例的情况下获取特定格式的更新时间。有没有可能。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-15 05:52:47

因为重用了相同的Date对象,所以总是得到相同的时间。Date对象是在解析类时创建的。要获取每次的当前时间,请使用:

代码语言:javascript
代码运行次数:0
复制
private static SimpleDateFormat timeFormatter= new SimpleDateFormat("hh:mm:ss a");

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

甚至是

代码语言:javascript
代码运行次数:0
复制
public static String getCurrentDate() {
    Date date = new Date();
    SimpleDateFormat timeFormatter= new SimpleDateFormat("hh:mm:ss a");
    return timeFormatter.format(date);
}

因为SimpleDateFormat不是线程安全的。

由于您只需要当前时间,因此甚至不需要创建新的日期。

代码语言:javascript
代码运行次数:0
复制
public static String getCurrentDate() {
    SimpleDateFormat timeFormatter= new SimpleDateFormat("hh:mm:ss a");
    return timeFormatter.format(System.currentTimeMillis());
}

如果您只想要输出而不需要解析能力,那么可以使用

代码语言:javascript
代码运行次数:0
复制
public static String getCurrentDate() {
    return String.format("%1$tr", System.currentTimeMillis());
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12434879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档