如何在Java8中格式化ZoneDateTime?

如何在Java8中格式化ZoneDateTime?,java,date,java-8,timestamp,format,Java,Date,Java 8,Timestamp,Format,我想用某种格式格式化当前日期 格式:20200807 | 12:44:55.000 但使用下面的代码只能打印到秒。我想打印到毫秒 DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMdd|HH:mm:ss"); String formattedString1 = ZonedDateTime.now().format(formatter1); System.out.println(formatted

我想用某种格式格式化当前日期

格式:20200807 | 12:44:55.000

但使用下面的代码只能打印到秒。我想打印到毫秒

DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMdd|HH:mm:ss");
String formattedString1 = ZonedDateTime.now().format(formatter1);
System.out.println(formattedString1);
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMdd|HH:mm:ss.SSS");
String formattedString1 = ZonedDateTime.now().format(formatter1);
System.out.println(formattedString1);

将模式更改为包含毫秒

DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMdd|HH:mm:ss");
String formattedString1 = ZonedDateTime.now().format(formatter1);
System.out.println(formattedString1);
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMdd|HH:mm:ss.SSS");
String formattedString1 = ZonedDateTime.now().format(formatter1);
System.out.println(formattedString1);

在代码中,您并没有考虑模式中的毫秒。因此,您需要更新您的模式,如下所示:

DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMdd|HH:mm:ss.SSS");

有关更多详细信息,您可以参考。

您基本上可以扩展您正在使用的模式
字符串
,它当前(显然)仅将时间单位的格式设置为秒(
HH:mm:ss
⇒ 小时、分钟和秒)

将其设置为“yyyyMMdd | HH:mm:ss.SSS”,以便获得秒的分数

public static void main(String[] args) {
    DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMdd|HH:mm:ss.SSS");
    String formattedString1 = ZonedDateTime.now().format(formatter1);
    System.out.println(formattedString1);
}
这将输出一个
字符串
,其形式如下所示:

20200807 | 10:57:17.547
如果您需要一天中的毫秒数(whysoever),您可以使用一个
a
,而不是这三个
S

看看字母的样式及其含义

以下是一个小摘录:

。。。
小时数(0-23)0
m小时分钟数30
第55分钟第二秒
第二分式的S分式978
百万日数1234
第二个号码为987654321的n nano
N第1234000000天的nano
...

你应该告诉模式考虑毫秒,太…你到底需要什么?一天中的毫秒还是几秒钟?你的尝试在哪里?您的模式显然不包括毫秒。为什么你不试着去做呢?@f1sh我很确定OP认为这段代码可以被认为是一种尝试,而懂
java.time
的程序员则不能。很难说这个问题是否包含实际的尝试…@deHaar imho很明显,这个模式需要扩展,因为这就是代码片段的全部内容。但是OP并没有阅读模式的文档并找出它,而是发布了这个问题。这就是为什么我不认为这是一种尝试。投反对票的人也说了同样的话。@f1sh是的,我终于同意了。。。也许我在这里太宽容了。