WCF データ サービスによって返される DateTime データの書式を指定する方法はありますか?
この質問は、 のようなデフォルト形式/Date(1339515455030)/
は、UTC 1970 年 1 月 1 日の午前 0 時からのミリ秒数であると言っているようです。必要に応じてそれを解析する方法を理解することはできますが、より使いやすい形式を指定したいと思います。
WCF データ サービスによって返される DateTime データの書式を指定する方法はありますか?
この質問は、 のようなデフォルト形式/Date(1339515455030)/
は、UTC 1970 年 1 月 1 日の午前 0 時からのミリ秒数であると言っているようです。必要に応じてそれを解析する方法を理解することはできますが、より使いやすい形式を指定したいと思います。
OData V3では、JSONVerbose形式はISO8601を使用します。これは、一部の消費者にとってより使いやすいようです。ただし、ペイロードがV3の場合にのみ使用されることに注意してください。したがって、サーバー側をsupper OData V3に更新する必要があります(WCF DSの場合は、たとえばNuGethttp://blogs.msdn.com/b/astoriateamにあるWCFDS5.0リリースを使用する必要があります。 /archive/2012/05/18/wcf-data-services-5-0-1-released.aspx)。
これができたら、サーバーが応答ペイロードでV3を使用するように強制する必要がある場合があります。これは、デフォルトでは、応答に可能な限り低いバージョンが使用されるためです。これは、MinDataServiceVersion:3.0を送信することで実行できます。クライアントからの要求を含むヘッダー。
この後、JSONVerboseペイロードでさえISO日時形式を使用する必要があります。
OData の DateTime 形式 (まだ文字列にフォーマットしていないと仮定します) は、クライアントとサーバーの間でネゴシエートされるワイヤ形式に依存します。上記の形式はJSON Verboseからのもので、標準の JavaScript Date オブジェクトに対応しています。Atom フォーマットは異なりますが、JSON Light はさらに異なります。特筆すべきは、従来の JavaScript Date 形式から離れて、JSON LightのISO 8601を採用することにしたことです。これらのいずれの場合でも、WCF DS クライアントや data.js などのクライアントを使用している場合、クライアントは値を適切に逆シリアル化します。
<d:OrderDate
m:type="Edm.DateTime">1996-07-04T00:00:00</d:OrderDate>
"OrderDate":"\/Date(836438400000)\/"
"ShippedDate":"1996-07-16T00:00:00"
さまざまなプラットフォームの現在のクライアント ライブラリについては、http ://www.odata.org/libraries を参照してください。
datetime.parse(http://msdn.microsoft.com/en-us/library/1k1skd40.aspx) に送り返された文字列値をフィードできるはずであり、残りについて心配する必要はないと思います
使用例を次に示します: http://www.dotnetperls.com/datetime-parse