2012-11-10 16 views
6

私は昨日から頭が壊れていて、それに対処する方法がわからないという問題があります。JSON日付の非正規化日付を

  • 私は次の値が含まれている私のデータベースの日付フィールドがあります。そして、私のアプリケーションが値を取得し、私のWebフォームにそれを送る

enter image description here

  • を。(値はまだ同じ:) thats fine !!クライアント側で

enter image description here

  • 私は(値がまだ同じ:)細かいthatsのJSONから来ている値を参照してくださいJavaScriptのアラートに休憩を入れて!

enter image description here

アラートのクライアント側のコードはこれです:私は、サーバーに値を返送するとき、これは私が得るものです今

// transaction json model 
var jsonTransaction = @(Html.Raw(Json.Encode(this.Model.Transaction))); 
alert(new Date(parseInt(jsonTransaction.Date.substr(6)))); 

enter image description here

  • 最後に、JSONのシリアル化を解除した後、私の日付は間違っています! 7日目の代わりに今8日目???????

enter image description here

これはデシリアライズのためのコードです:

public JsonResult SaveBill(string jsonTransaction, string jsonTranDetails) 
{ 
    _appState = this.AppState; 
    JsonResult returnVal = returnVal = Json(
     new { Success = true } 
    ); 

var transaction = JsonConvert.DeserializeObject<BillTransaction>(jsonTransaction, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore }); 

日付で、この問題を解決する方法上の任意の手掛かり私は何も変更しなかったので、私は同じ日付を取得する必要があります。誰かが私に解決策を導くことを願っています。

ありがとうございます。

+0

NewtonsoftのJSON.NETを使用している場合、この問題は解決しません。 ASP.NET MVC 4の新しいWeb APIは、同じパーサを使用します。 –

+0

これはあなたが知る必要があるすべてを議論する必要があります:http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI。ASPX –

+0

私は同じ日付を取得することができる唯一の方法は、サーバー側でこれをやっている: JsonConvert.DeserializeObject (jsonTransaction、新しいJsonSerializerSettings(){NullValueHandling = NullValueHandling.Ignore、DateFormatHandling = DateFormatHandling.MicrosoftDateFormat、DateTimeZoneHandling = DateTimeZoneHandling.Local }); しかし、DateTimeZoneHandling.Localを使用しているかどうかわかりません。 – VAAA

答えて

0

のJavaスクリプトを使用して、クライアントに日付を送信するとき、それは日付が強いにそれをconvering前に、UTCであることを確認して、このような としてISOの日付に変換するので、CURRENTDATE =新しいDate(123232) として日付を解析ユニバーサル時間を使用します。

return String.Format("{0:yyyy-MM-ddTHH:mm:ss.fffZ}", dt); 

BTY私はすでに作成したJSONは、上記の関数を使用するようにクライアント側に任意の日付のシリアル化を上書きするように変換しました。

関連する問題