JAVA OffsetDateTime定制百分之一秒

问题描述 投票:3回答:3

我目前正在寻找日期的自定义格式,但我无法获得它。

我想使用以下代码获取"1997-07-16T19:20:30.45+01:00"

OffsetDateTime o = OffsetDateTime.now();
String l = o.format(DateTimeFormatter.ISO_DATE_TIME);

结果是:

2017-03-28T16:23:57.489 + 02:00

非常接近,但我只需要hh:mm:ss.XX,而不是hh:mm:ss.XXX

你知道怎么定制OffsetDateTime吗?我找不到好的例子。

java datetime-format datetimeoffset
3个回答
1
投票

Your answer几乎是正确的。如果你看看DateTimeFormatter javadoc,你会看到小写的s对应于秒,大写的S对应于秒的小数:

Symbol  Meaning                     Presentation      Examples
------  -------                     ------------      -------
s       second-of-minute            number            55
S       fraction-of-second          fraction          978

所以,在你的模式中,sS是倒置的。正确的模式是:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSXXX");
OffsetDateTime o = OffsetDateTime.now();
System.out.println(o.format(formatter));

输出是:

2017-06-19T20:34:29.75-03:00


PS:请注意,秒的分数是75 - 大于59,这是秒的最大值(在你的答案中,它似乎是正确的,因为秒的分数是48,这给人的印象是它起作用)。

另一个细节是我的情况下的偏移是-03:00,因为我系统的默认时区。无论如何,只需修复你的模式,它应该工作。


0
投票

对于有同样问题的人。

似乎与模式:

String ISO_OFFSET_DATE_TIME_WITH_HUNDREDTH_OF_SECOND = "yyyy-MM-dd'T'HH:mm:SS.ssXXX";

DateTimeFormatter dateTimeFormatter =
        DateTimeFormatter.ofPattern(ISO_OFFSET_DATE_TIME_WITH_HUNDREDTH_OF_SECOND);


String ll = o.format(dateTimeFormatter);
System.out.println(ll);

我有所需的输出:

2017-03-28T16:44:48.30 + 02:00


0
投票

同样的问题。

我修好了它。

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
String custom = dateTimeFormatter.format(OffsetDateTime.now());

您可以在此.ofPattern("--format--")中创建所需的其他格式

参考:qazxsw poi

为我工作。

© www.soinside.com 2019 - 2024. All rights reserved.