在SimpleDateFormat中是否有毫秒级别的1970年以来的时间戳?我知道getTime()
方法,但我想定义一个包含毫秒级别的日期和时间格式。
在SimpleDateFormat中是否有毫秒级别的1970年以来的时间戳?我知道getTime()
方法,但我想定义一个包含毫秒级别的日期和时间格式。
SimpleDateFormat
没有一个符号(字母)用于插入自1970年1月1日00:00:00 UTC以来的毫秒数。
原因:坦率地说,仅插入自纪元开始的毫秒数就是插入Date.getTime()
返回的long值,即表示时间点(Date
)的值,当您的目标是创建人类可读的格式化日期/时间字符串时,这并不是非常有用。因此,我认为为此设置符号是不合理的。您可以轻松地附加此数字或将其值作为任何其他简单数字一样包含。
但是,还有一种选择:String.format()
String.format()
使用格式字符串,该字符串还支持日期/时间转换,其与SimpleDateFormat
的模式非常相似。
例如,有一个符号'H'
用于一天中的小时(24小时制),'m'
用于月份(两位数字)等,在大多数情况下,String.format()
可以代替SimpleDateFormat
。
您感兴趣的内容也有一个符号:'Q'
:自1970年1月1日00:00:00 UTC以来的毫秒数。
更好的是,String.format()
足够灵活,可以接受long
值和Date
作为日期/时间转换的输入参数。
用法:
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)"