请有人帮我解决这个问题
我有一个简单的 Date 对象,例如:
Date dt = new Date();
我想将其转换为 json 日期格式,例如:
"\/Date(928164000000-0400)\/"
怎么做。
采用
Date dt = new Date();
"\/Date(" + dt.getTime() + "-0400)\/"
您可能需要首先解析 getTime(),具体取决于您当前的日期格式。
这是使用com.google.gson.*
final JsonSerializer<Date> dateSerialize = new JsonSerializer<Date>()
{
@Override
public JsonElement serialize(final Date src,
final Type typeOfSrc,
final JsonSerializationContext context)
{
final String dateString = "Date(" + src.getTime() + "-" + src.getTimezoneOffset()+")";
return new JsonPrimitive(dateString);
}
};
Gson gson = GsonBuilder().registerTypeAdapter(Date.class, dateSerialize)
.create();
Date dt = new Date();*
gson.toJson(dt);
JSON中没有真正的日期格式,只有一些不通用的约定。
话虽如此,您的“日期”分为两部分:
但是 java Date
(与 a 相反calendar
),就像 javascript 一样,不包含时间偏移量(getTimezoneOffset()
已弃用)。因此,您必须决定要使用哪一个。或者,您可以像我一样,简单地发送带有零偏移量的 UTC 时间戳:
var jsonDateUTC = "Date("+javaDate.getTime()+"-0000)";