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には実際には Date 形式はありません。普遍的ではない規則がいくつかあるだけです。

そうは言っても、あなたの「日付」は2つの部分に分かれています:

  • エポックからのミリ秒数。これは、getTime() メソッドを使用して UTC で取得できます。
  • タイムゾーンのオフセット

しかし、java Date( a とは対照的にcalendar) は、javascript と同様に、時間オフセットを含みません (getTimezoneOffset()は非推奨です)。したがって、どちらを使用するかを決定する必要があります。または、私がするように、オフセットがゼロの UTC タイムスタンプを単純に送信することもできます。

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