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