我能想到两个选项:
选项 1:
public class TimestampFormatter {
private static SimpleDateFormat dateFormatter =
new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
private static Date date = new Date();
public static String get() {
date.setTime(System.currentTimeMillis());
return dateFormatter.format(date);
}
}
选项 2:
public class TimestampFormatter {
private static SimpleDateFormat dateFormatter =
new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
public static String get() {
return dateFormatter.format(new Date());
}
}
然后使用此循环每秒打印格式化的日期+时间:
new Thread(() -> {
while (true) {
System.out.println(TimestampFormatter.get());
Sleep.millis(1000);
}
}).start();
我认为第一个选项是这里两个选项中最好的,但谁能想到更好的方法?
第二个选项可能比第一个选项更有效(或者第一个选项可能要好得多- 我怀疑你能测量任何差异(。无论我更喜欢较新的java.time.format.DateTimeFormatter
和java.time.LocalDateTime
,而不是长期弃用的SimpleDateFormat
和Date
类。此外,安排重复Timer
比使用while
循环和重复睡眠调用更有效。像这样,
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
TimerTask task = new TimerTask() {
public void run() {
System.out.println(dtf.format(LocalDateTime.now()));
}
};
Timer timer = new Timer("Timer");
timer.scheduleAtFixedRate(task, TimeUnit.SECONDS.toMillis(0),
TimeUnit.SECONDS.toMillis(1));