自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/

10-13 07:41