自1970年以来,SimpleDateFormat中是否有一个毫秒的字母?

时间:2014-09-05 08:23:30

标签: java timestamp

自{1970年以来SimpleDateFormat中是否有一封毫秒的字母?我知道getTime()方法,但我想定义一个包含毫秒的日期和时间模式。

1 个答案:

答案 0 :(得分:7)

SimpleDateFormat没有用于插入自1970年1月1日00:00:00 UTC开始的纪元开始以来的毫秒数的符号(字母)。

原因:坦率地说,只是插入自纪元开始以来的毫秒数只是插入long返回的Date.getTime()值,即时间(Date)的值是如何表示的,当你的目标是创建一个人类可读的,格式化的日期/时间字符串时,这不是很有用。所以我认为没有一个符号可以证明这是正当的。您可以轻松附加此号码,也可以像其他任何简单号码一样包含其值。

但是,还有另一种选择:String.format()

String.format()使用的format string也支持日期/时间转换,这与SimpleDateFormat的模式非常相似。

例如,当天的小时(24小时制)有一个符号'H',月份有'm'(两位数)等,所以在大多数情况下String.format()可以代替SimpleDateFormat使用。

您感兴趣的还有一个符号:'Q':从1970年1月1日00:00:00 UTC开始的纪元开始以来的毫秒数。

更好的是,String.format()足够灵活,可以接受long值和Date s作为日期/时间转换的输入参数。

用法:

System.out.println(String.format("%tQ", System.currentTimeMillis()));
System.out.println(String.format("%tQ", new Date()));

// Or simply:
System.out.printf("%tQ\n", System.currentTimeMillis());
System.out.printf("%tQ\n", new Date());

// Full date+time+ millis since epoc:
Date d = new Date();
System.out.printf("%tF %tT (%tQ)", d, d, d);
// Or passing the date only once:
System.out.printf("%1$tF %1$tT (%1$tQ)", d);

// Output: "2014-09-05 11:15:58 (1409908558117)"