我目前正在寻找日期的自定义格式,但我无法获得它。
我想使用以下代码获取"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
吗?我找不到好的例子。
Your answer几乎是正确的。如果你看看DateTimeFormatter
javadoc,你会看到小写的s
对应于秒,大写的S
对应于秒的小数:
Symbol Meaning Presentation Examples
------ ------- ------------ -------
s second-of-minute number 55
S fraction-of-second fraction 978
所以,在你的模式中,s
和S
是倒置的。正确的模式是:
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
,因为我系统的默认时区。无论如何,只需修复你的模式,它应该工作。
对于有同样问题的人。
似乎与模式:
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
同样的问题。
我修好了它。
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
String custom = dateTimeFormatter.format(OffsetDateTime.now());
您可以在此.ofPattern("--format--")
中创建所需的其他格式
参考:qazxsw poi
为我工作。