自1970年以来,SimpleDateFormat中有毫秒的字母吗?我知道getTime()
方法,但是我想定义一个包含毫秒的日期和时间模式。
最佳答案
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
作为日期/时间转换的输入参数。
用法:
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)"
关于java - 自1970年以来,SimpleDateFormat中是否存在毫秒的字母?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25681531/