0

请有人帮我解决这个问题

我有一个简单的 Date 对象,例如:

Date dt = new Date();

我想将其转换为 json 日期格式,例如:

"\/Date(928164000000-0400)\/"

怎么做。

4

3 回答 3

3

采用

Date dt = new Date();
"\/Date(" + dt.getTime() + "-0400)\/"

您可能需要首先解析 getTime(),具体取决于您当前的日期格式。

于 2012-11-12T13:01:24.557 回答
1

这是使用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);
于 2012-11-12T13:01:31.167 回答
1

JSON中没有真正的日期格式,只有一些不通用的约定。

话虽如此,您的“日期”分为两部分:

  • 自纪元以来的毫秒数。您可以使用 getTime() 方法在 UTC 中获取此信息
  • 时区偏移

但是 java Date(与 a 相反calendar),就像 javascript 一样,不包含时间偏移量(getTimezoneOffset()已弃用)。因此,您必须决定要使用哪一个。或者,您可以像我一样,简单地发送带有零偏移量的 UTC 时间戳:

var jsonDateUTC = "Date("+javaDate.getTime()+"-0000)";
于 2012-11-12T13:03:38.743 回答