【问题标题】:Unparseable date : "20180......" Json date to java无法解析的日期:“20180 ......” Json 日期到 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

标签: java json date parsing converters


【解决方案1】:

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

尝试不同的模式,例如:

SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");

【讨论】:

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