我刚在我的Windows(8)工作站和一台AIX上测试了这段代码:
public static void main(String[] args) {
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS").format(new Date()));
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS").format(new Date()));
}
然后得到了类似这样的结果:
2013-10-07 12:53:26.000905
2013-10-07 12:53:26.000906
有人能解释一下什么是最后几位数字吗?如果不是微秒?
注意:我与一个使用带有6个数字AFTER秒即微秒(IMO)的TIMESTAMP作为时间列存储时间数据的DB2数据库进行交互。但所有这些“时间戳”都是通过请求以下查询创建的:
SELECT current timestamp as currenttimestamp FROM Table ( values (1)) temp
考虑到上述结果,我想知道是否可以在我的代码中使用 new Date()
替代从数据库中选择 current timestamp
。
谢谢。
PS:我搜索了一下,但没有找到相关的(已回答)问题,例如: Java 中微秒级别的当前时间 或者 获取时、分、秒、毫秒和微秒时间
java.util.Date
、java.util.Calendar
和java.text.SimpleDateFormat
等旧的日期时间类现在已成为遗留系统,被内置于 Java 8 & Java 9 的 java.time 类所替代。请参阅 Oracle 的教程。 - Basil BourqueSimpleDateFormat
会混淆大写格式字母S
,无论使用多少个字母,都被视为毫秒。而现代化的工具类DateTimeFormatter
则将S
解释为秒的小数部分。因此,使用DateTimeFormatter.ofPattern
可以有意义地指定1到9个S
,并获得您期望的结果。 - Ole V.V.