2

クライアントが HTTP 応答の XML または JSON 形式を使用して要求できる ASP.NET WebAPI 実装があります。一部の応答オブジェクトには、日付/時刻の値が含まれています。次のようなコードを使用して、JSON 応答に適切な ISO 8601 形式の日付 (UTC 時間オフセットを含む) を含めることに成功しました。

Dim json As JsonMediaTypeFormatter = _
  GlobalConfiguration.Configuration.Formatters.JsonFormatter
json.SerializerSettings.DateFormatHandling = _
  Newtonsoft.Json.DateFormatHandling.IsoDateFormat
json.SerializerSettings.DateTimeZoneHandling = _
  Newtonsoft.Json.DateTimeZoneHandling.Local

JsonFormatter は、次のような日付を表示するようになりました。

2008-11-03T14:14:00-05:00

ただし、XmlFormatter は次のような日付を返します。

2008-11-03T14:14:00

UTC 時間オフセット (「-05:00」) がないことに注意してください。XMLFormatter で UTC 時間オフセットを取得するにはどうすればよいですか?

4

1 に答える 1

1

私は自分でこれを理解したと信じています。

SQL Server データベース (IDataReader を使用) および Enterprise Library Data Block から日付を読み取る場合、Date.SpecifyKind メソッドを使用して、データベースから取得される日付の種類を確認する必要があります。

Dim dateCreated As Date = _
  Date.SpecifyKind(CDate(dbReader("DateCreated")), DateTimeKind.Local)

これを行うことで、元の質問で指定された JsonMediaTypeFormatter 行を削除することもできました。したがって、XML と JSON の両方が次のように日付を送信します。

2008-11-03T14:14:00-05:00

Date.SpecifyKind の詳細については、http://msdn.microsoft.com/en-us/library/bb546101.aspx を 参照してください。

于 2012-11-02T14:45:45.053 に答える