【问题标题】:JAVA OffsetDateTime custom hundredth of secondJAVA OffsetDateTime 自定义百分之一秒
【发布时间】:2017-03-28 14:29:20
【问题描述】:

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

我想使用以下代码获取"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吗?我找不到好的例子。

【问题讨论】:

  • 我认为你的代码没有问题,毫秒会不时变化,有时你会得到 XXX,但如果你再次编译你的代码,你会得到 XX。这是我的 2017-03-28T19:36:00.45+05:00。

标签: java datetime-format datetimeoffset


【解决方案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,因为我的系统是默认时区。无论如何,只要修正你的模式,它应该可以工作。

【讨论】:

    【解决方案2】:

    对于任何有同样问题的人。

    似乎与模式:

    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

    【讨论】:

    • 如另一个答案中提到的HH:mm:SS.ss 应该是HH:mm:ss.SS
    【解决方案3】:

    同样的问题。

    我修好了。

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

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

    参考:https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

    为我工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多