无法解析的日期:“20180 ......” Json 日期到 java

Posted

技术标签:

【中文标题】无法解析的日期:“20180 ......” Json 日期到 java【英文标题】:Unparseable date : "20180......" Json date to java 【发布时间】:2021-01-23 08:17:57 【问题描述】:

我正在尝试解析像 "20180130000000" 这样的 json 格式的日期, 程序向我发送了这个异常你知道怎么做吗? 这是我的代码:


   "monTableau": [
      
         "Données": "ONE",
         "Date import": "20180130000000",
         "Date export": "20180130000000"
      ,
      
         "Données": "TWO",
         "Date import": "20190101000000",
         "Date export": "20190101000000"
      ,
      
         "Données": "THREE",
         "Date import": "20200101000000",
         "Date export": "20200101000000"
      ,
      
         "Données": "FOUR",
         "Date import": "20180130000000",
         "Date export": "20180130000000"
      
   ]

public class App 

    public static void main( String[] args )
    
        JSONParser jsonP = new JSONParser();
        SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yy");

        try 
            JSONObject jsonO = (JSONObject) jsonP.parse(new FileReader("C:/myJsonTest.json"));
            JSONArray myArray = (JSONArray) jsonO.get("monTableau");

            for (int i=0;i<myArray.size();i ++)
                JSONObject jo = (JSONObject) myArray.get(i);
                String donnees = (String) jo.get("Données");
                String dateImport = (String) jo.get("Date import");
                Date date = df.parse(dateImport);
                String dateExport = (String) jo.get("Date export");
                System.out.println("Donnees : "+donnees);
                //System.out.println("Date import : "+date);
            

         catch (ParseException e) 
            e.printStackTrace();
         catch (FileNotFoundException e) 
            e.printStackTrace();
         catch (IOException e) 
            e.printStackTrace();
         catch (java.text.ParseException e) 
            e.printStackTrace();
        
    

【问题讨论】:

为什么你认为"20180130000000" 格式的日期时间可以用"dd-MMM-yy" 模式解析?一定要用java.util.Datejava.text.SimpleDateFormat还是可以切换到java.time 【参考方案1】:

您使用dd-MMM-yy 模式定义了日期格式化程序。但是你的输入却完全不同。您必须根据输入来调整模式。

尝试不同的模式,例如:

SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");

【讨论】:

以上是关于无法解析的日期:“20180 ......” Json 日期到 java的主要内容,如果未能解决你的问题,请参考以下文章

在 JS 中从 Wikidata 解析 ISO-Date

Globalize.js - 如何解析日期和时间而不仅仅是日期

如何从解析的 d3.js 日期创建新的日期格式

错误代码:38 DB::Exception:无法解析日期:值太短:无法从字符串解析日期:执行“FUNCTION toDate()”时

偏移 25 处无法解析的日期

使用 moment.js 解析字符串到日期