【问题标题】:Parse date from JSON to Java [duplicate]将日期从 JSON 解析为 Java [重复]
【发布时间】:2023-04-10 18:49:01
【问题描述】:

我正在调用网络服务来检索日期。这些日期采用这种格式

"2018-01-24T05:00:00.000Z"

现在,我需要将其解析为更清晰,例如 "dd-MM-YYYY",例如1-24-2018

我该怎么做?

我正在使用 Android Studio 并阅读了有关 Instant 的信息,但它需要 minSdkVersion 26 并且设置为 15,这对我来说是完美的。

【问题讨论】:

  • 你能发布更多格式的例子吗,不清楚它的实际含义
  • 您在问:1)如何解析日期,2)如何格式化日期。这两个问题已经被回答了无数次,您所要做的就是research,也就是对这两个问题进行网络搜索。 idownvotedbecau.se/noresearch
  • 我相信您可以在 API 级别 15 到 ThreeTenABP 上使用 Instant。并且您应该考虑这样做。在这种情况下,从带有子包的同一个包中导入 org.threeten.bp.Instant 和其他日期时间类。
  • @GursheeshSingh,它显然是 ISO 8601,定义明确。例如,格式可以描述为DateTimeFormatter.ISO_INSTANT

标签: java android date android-studio


【解决方案1】:

您可以对 JSON 日期使用自定义反序列化器。

您可以轻松地将它们解析为 Java Date 对象

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
Date date = dateFormat.parse("2018-01-24T05:00:00.000Z");

更多详情见https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html

【讨论】:

    【解决方案2】:

    你可以试试这样的......

    我在 Eclipse 中做了这个......

        public static void main(String[] args) throws Exception {
    
    
        String jsonDate = "2018-01-24T05:00:00.000Z";
    
        String[] split = jsonDate.split("-");
    
        System.out.println(split[0]);
        System.out.println(split[1]);
        System.out.println(split[2].substring(0, 2));
    
        String month = split[1].toString();
        String day = split[2].substring(0, 2).toString();
        String year = split[0].toString();
    
        System.out.println(month + "-" + day + "-" + year);
    }
    

    输出

    2018

    01

    24

    01-24-2018

    【讨论】:

      【解决方案3】:
      import java.text.ParseException;
      import java.text.SimpleDateFormat;
      import java.util.Date;
      
      private String formatDateFromString (String dateString) {
              try {
                  SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS" );
                  Date date = simpleDateFormat.parse(dateString);
                  simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
                  return simpleDateFormat.format(date);
              } catch (ParseException e) {
              }
              return "";
          }
      

      【讨论】:

        猜你喜欢
        • 2012-06-29
        • 2018-01-09
        • 1970-01-01
        • 1970-01-01
        • 2015-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多