当前位置: 首页 > 知识库问答 >
问题:

如何在Java格式化一个ISO-8601字符串?[副本]

张可人
2023-03-14

如何将ISO-8601字符串2020-02-10T22:55:13-08:00格式化为自定义格式,如1:30pm?我一直得到无法解析的日期异常。下面是我的代码段:

    String string = "2020-02-10T22:55:13-08:00";
    SimpleDateFormat sdfSource = new SimpleDateFormat("YYYY-MM-DD'T'HH:mm:ss'Z'", Locale.getDefault());
    SimpleDateFormat sdfTarget = new SimpleDateFormat("h:mma", Locale.getDefault());
    try {
        Date date = sdfSource.parse(string);
        String createdAt = sdfTarget.format(date);
        System.out.println(createdAt);
    } catch (ParseException e) {
      e.printStackTrace();
    }

共有1个答案

干永丰
2023-03-14
    private String  getZonedDateTime(String startTime,String inExpectedTimeZone){
        return ZonedDateTime
                .parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX"))
                .withZoneSameInstant(ZoneId.of(inExpectedTimeZone)).format(DateTimeFormatter.ofPattern("hh:mm a"));
    }

在上面的方法中,只需传递zulu字符串和您想要值的预期时间,它将使用Java 8ZonedDateTime和DateTimeFormatter进行解析。

 类似资料:
  • 问题内容: 我正在尝试从标准ISO 8601 格式更改为好的MMM d yyyy hh:mm z格式,但是我当前的代码失败。 我正在从api接收时间和日期。 问题答案: A 是“ ISO-8601日历系统中没有时区的日期,例如2007-12-03”,因此那里没有足够的信息。使用代替。 同样,吞噬这样的异常会使得排除故障变得更加困难。当您不打算处理异常时,要么根本不捕获它,要么捕获并重新包装在Run

  • 问题内容: 我有一个对象。 如何呈现以下片段的一部分? 我有另一个图书馆的“相对语言时间”部分。 我尝试了以下方法: 但这给了我: 问题答案: 已经有一个名为的函数: 如果您以某种方式使用了不支持它[的浏览器,那么我可以满足您的要求:

  • 问题内容: 我正在尝试以 2015-08-20T08:26:21.000Z* 到 2015-08-20T08:26:21Z 的格式创建字符串 * 我知道可以使用某些String拆分技术来做到这一点,但是我想知道是否有一种优雅的解决方案(只需最少的代码更改)。 以上都是时间字符串,我需要的最后一个是ISO 8601中的Date。http://tools.ietf.org/html/rfc3339#s

  • 我如何从moment.js获得ISO 8601?

  • 我有这段代码,在这里我试图将日期字符串从一种格式转换为另一种格式,最后我想再次使用日期对象。

  • 我有一个字符串列表包含147个不同的时间戳。我正在尝试将列表中的每个日期/元素转换为ISO 8601 / RFC 3339格式。 到目前为止,我已经尝试使用库中的函数 它会导致以下错误 还有其他解决方案吗?谢谢