ike*_*ke3 15 javascript java spring date spring-mvc
我有一个带有Date属性的javascript对象,它正在使用转换为JSONJSON.stringify
我在GMT + 4时区(俄罗斯/莫斯科)
例如,
5 Jan 2012转换为2012-01-04T20:00:00.000Z
5 Jan 1975 转换为 1975-01-04T20:00:00.000Z
但是在1975年它是GMT + 3时区,因为2011年在俄罗斯取消了夏令时.所以当它来到服务器(java)时,它反序列化为:
2012-01-04T20:00:00.000Z因为5 Jan 2012 00:00- 好的
1975-01-04T20:00:00.000Z因为4 Jan 197523:00 - 错!
在Javascript中将Date对象转换为JSON的推荐方法是什么?
Nil*_*ils 14
我更喜欢坚持使用javascripts ISO 8601日期格式,正确解析它会自动处理时区差异.
在java中,您可以解析javascript Stringified JSON日期,如下所示:
String iso8601Date = "2013-08-13T14:15:00.000Z";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
Date parsedDate = formatter.parse(iso8601Date);
Run Code Online (Sandbox Code Playgroud)
当把它变回字符串时,你会有类似的东西
//"2013-08-13T16:15:00.000+02:00"
String formattedDate = formatter.format(parsedDate);
Run Code Online (Sandbox Code Playgroud)
为了解析JSON我使用FlexJson,您可以像这样配置.
//Serializing to JSON
DateTransformer dateTransformer = new DateTransformer("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
new JSONSerializer().transform(dateTransformer, Date.class).serialize(object);
//deserialize From JSON (replace object by java class)
JSONDeserializer<..Object..>().use(Date.class, dateTransformer).deserialize(json);
Run Code Online (Sandbox Code Playgroud)
Bru*_*uno 13
我建议使用自纪元符号以来的秒数来传递日期/时间,更具体地说是自Unix纪元(1970年1月1日00:00 GMT)以来的秒数.如果你不熟悉这个,那里有一个示例转换器:http://www.epochconverter.com/
这有一些优点:
java.util.Date,参见(getTime()也).(请注意,这使用毫秒.)new Date(1000 * 1326894706)).(请注意,这使用毫秒.)"yyyy-MM-dd HH:mm:ss".{ "datetime": 1326894706, "tz": "GMT" }还是比{ "datetime": "18 Jan 2012 13:51:46 GMT" }.考虑到Date在Java和JavaScript中很容易从中获取实例,然后可以使用a DateFormatter将其转换为Java中的文本.对于JavaScript,使用诸如日期格式之类的库将帮助您在页面上适当地呈现它(例如,使用类似的东西new Date(val * 1000).format("yyyy-mm-dd HH:MM")).
| 归档时间: |
|
| 查看次数: |
30618 次 |
| 最近记录: |