【问题标题】:How to format 2021-12-17T06:23:49.000000Z?如何格式化 2021-12-17T06:23:49.000000Z?
【发布时间】:2022-01-21 06:30:31
【问题描述】:

我想将此日期2021-12-17T06:23:49.000000Z 格式化为Dec 17,2021。我该如何实现?

这是我尝试过的:

SimpleDateFormat spf=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS.'Z'");
Date newDate= null;
try {
    newDate = spf.parse(date);
} catch (ParseException e) {
    e.printStackTrace();
}
spf= new SimpleDateFormat("dd MMM yyyy");
date = spf.format(newDate);

【问题讨论】:

  • .SSSSSS.'Z' 如何解析 .000000Z?该模式在毫秒和 Z 之间有一个额外的点

标签: java android android-studio


【解决方案1】:

这里最大的错误是使用旧的DateSimpleDateFormat 类。它们是遗留的,主要是为了向后兼容而保留的。 java.time 包提供了更加一致的 API。喜欢,

String date = "2021-12-17T06:23:49.000000Z";
OffsetDateTime inst = OffsetDateTime.ofInstant(Instant.parse(date), 
        ZoneId.systemDefault());
System.out.println(DateTimeFormatter.ofPattern("MMM dd, yyyy").format(inst));

输出

Dec 17, 2021

【讨论】:

  • 或自动本地化:DateTimeFormatter.ofLocalizedDate( FormatStyle.MEDIUM ).withLocale( Locale.getDefault() )
猜你喜欢
  • 2022-01-24
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-16
  • 2020-04-10
  • 1970-01-01
  • 2022-01-13
相关资源
最近更新 更多