java中的哪个日期模式可以生成此日期结果?(秒后七位数字)
我需要一个日期模式来生成如下日期字符串: 2019-12-18T17:11:24.2646051+03:30
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.?XXX").format(new Date())
我应该写什么而不是“?”
你可以在下面搜索框中键入要查询的问题!
我需要一个日期模式来生成如下日期字符串: 2019-12-18T17:11:24.2646051+03:30
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.?XXX").format(new Date())
我应该写什么而不是“?”
# 1 楼答案
试试这个:
如果你想要比毫秒更精确,请看这个link
# 2 楼答案
第一点,摆脱
SimpleDateFormat
。那门课出了名的麻烦,而且早已过时。而且SimpleDateFormat
不可能在几秒钟内产生7位小数第二点,你可能不需要在秒数上打印7个小数。通过
2019-12-18T17:11:24.2646051+03:30
示例说明的格式是ISO 8601。在ISO 8601中,秒的小数位数是自由的,因此如果你给他们一个包含3个小数、9个小数或根本没有小数的字符串,每个人都应该接受(在最后一种情况下,也不要使用小数点)爪哇。时间
因此,简单的解决方案是:
我刚才运行代码时的输出:
我正在使用java。时间,现代Java日期和时间API。我正在利用java日期和时间类的
toString
方法这一事实。时间打印ISO 8601格式。所以到目前为止,我们还不需要显式格式化程序如果你想要或需要7位小数,一定要使用^{:
可以仅使用格式模式字符串指定格式化程序,但我更喜欢在代码长几行时,对日期部分重用内置的
ISO_LOCAL_DATE
格式化程序链接
# 3 楼答案
可以使用
S
表示毫秒。见this documentation page。但你不能使用超过3个;似乎不支持微秒或更细粒度的选项输出示例:
如果确实需要更高的粒度,可以选择使用
Instant.now()
函数,尽管以下代码只会生成6位数字(微秒,没有纳秒):输出示例:
有关更多信息,请参见this answer