Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java,日期从单独的JSON值到字符串到日期_Java_Sql_Json_Date_Simpledateformat - Fatal编程技术网

Java,日期从单独的JSON值到字符串到日期

Java,日期从单独的JSON值到字符串到日期,java,sql,json,date,simpledateformat,Java,Sql,Json,Date,Simpledateformat,我有一个JSON对象返回到我的应用程序,其中包含一个日期 date": { "year": 2011, "month": 5, "dayOfMonth": 30, "hourOfDay": 16, "minute": 13, "second": 47 }, 我需要使用这个日期并将其存储在SQL数据库中,很可能是一个字符串,因此我使用Java中的JSON函数解析这个日期对象 在这里,我试图将整个部分格式化为一个字符串,其中日期和冒号之间为破折号,时间和分钟之间为冒号。希望我能用SimpleDat

我有一个JSON对象返回到我的应用程序,其中包含一个日期

date": {
"year": 2011,
"month": 5,
"dayOfMonth": 30,
"hourOfDay": 16,
"minute": 13,
"second": 47
},
我需要使用这个日期并将其存储在SQL数据库中,很可能是一个字符串,因此我使用Java中的JSON函数解析这个日期对象

在这里,我试图将整个部分格式化为一个字符串,其中日期和冒号之间为破折号,时间和分钟之间为冒号。希望我能用SimpleDataFormat解析它,但用parserexceptionerror就失败了

dataObj.getJSONObject("dateObject").getString("year") + "-" +
dataObj.getJSONObject("dateObject").getString("month") + "-" +
dataObj.getJSONObject("dateObject").getString("dayOfMonth") + " " +
dataObj.getJSONObject("dateObject").getString("hourOfDay") + ":" +
dataObj.getJSONObject("dateObject").getString("minute") + ":" +
dataObj.getJSONObject("dateObject").getString("second");
最好的办法是什么

我需要将JSON字符串组合成一个可读的日期,理想情况下我可以将其转换成字符串。这可以是一个格式化的日期-例如
simpledateformat
可以执行的操作,也可以是毫秒


Insight欣赏

如果您还没有,那么您应该看看JSON库,它使JSON序列化和反序列化更加容易。谷歌和谷歌都非常优秀


JSON库知道如何将日期JSON字符串读入
java.util.date
对象。然后可以将其存储在数据库中的datetime列中。将日期作为适当的日期时间数据类型存储在数据库中的优点是,可以更轻松地构建查询—例如,如果需要选择两个日期之间的所有记录。如果这是一个字符串列,您的查询将很快变得难看。datetime的另一个特点是它存储在一个固定长度的列中(在许多数据库实现中存储毫秒长的值),因此存储是高效的。如果开始计算完整SimpleDataFormat字符串中的所有字符,则存储为字符串很容易占用更多空间。因此,在datetime上构建索引比在可变长度的字符串列上构建索引更有效。

假设目标是将日期信息的字符串表示形式(例如格式为“2011-5-30 16:13:47”)转换为
java.util.date
实例

String dateString = "2011-5-30 16:13:47";
Date date = new SimpleDateFormat("yyyy-M-dd HH:mm:ss").parse(dateString);
System.out.println(date);
// output: Mon May 30 16:13:47 MST 2011

String dateString2 = "2011-11-3 16:13:47";
Date date2 = new SimpleDateFormat("yyyy-M-dd HH:mm:ss").parse(dateString2);
System.out.println(date2);
// output: Thu Nov 03 16:13:47 MST 2011

另一种方法是将所有JSON输入值转换为Java整数,然后使用
Calendar.getInstance().set(year+1900,month,date,hrs,min,sec).getTime()

提供信息,但是我的JSON对象名为
date
的格式是否已经是JSON函数可以读取为日期对象的格式?我目前受此对象如何返回到meThe的影响。您发布的JSON不是任何标准日期格式。您可能需要创建自己的模型对象MyDate,该对象上有年、日、月等字段。然后,GSON将能够将JSON字符串转换为该对象的实例。然后,您的模型对象上可以有一个方便的方法,该方法从其字段中构建一个java Calendar/Date对象,使您的生活更加轻松。Gson或Jackson或我见过的任何其他JSON处理API中都没有任何东西可以使转换为java.util.Date变得更加轻松。这样的API只是使Java与JSON之间的序列化/反序列化更加方便。这并不完全正确。GSON支持将日期转换为JSON并返回日期。还可以选择不同的日期格式-请参阅GsonBuilder设置中的日期:。这里的问题是,JSON中没有以任何标准格式表示日期。我确信可以指定一种日期格式,将从传入JSON的不同部分生成的字符串转换为java.util.date实例。您尝试了什么日期格式模式?请注意,在JSON处理示例中,重复的dataObj.getJSONObject(“dateObject”)调用可以替换为JSONObject dateJson=dataObj.getJSONObject(“dateObject”);getString(“year”)+“-”+等。这将提高性能,这可能无关紧要。这也有助于提高代码的可维护性,因为任何小的相关更改都不需要进行六次,而只需要一次。这对我来说很有效,非常灵活。我使用了错误的“SimpleDataFormat”种子。我将格式固定为您的
“yyyy-M-dd HH:mm:ss”
,您可能是通过查看我的字符串得到的,并且我停止了获取解析器异常!