2017-05-30 5 views
0

ため日時種類UTCを設定する私は次のコードを持っている:どのようWEBAPI URLパラメータ

[HttpGet] 
[Route("{startDateUtc:datetime}/{endDateUtc:datetime}/{pageNumber?}", Name = "MyRoute")] 
[ResponseType(typeof(List<string>))] 
public IHttpActionResult GetData(DateTime? startDateUtc, DateTime? endDateUtc, int pageNumber = 1) 
{ 
    HandleData(startDateUtc.Value, endDateUtc.Value, pageNumber); 
    return this.Ok(); 
} 

することは私には、次のURLを使用しよう:http://localhost:5555/MyRoute/2014-09-17T00:00:00Z/2014-09-18T00:00:00Z/1 問題がstartDateUtc.ValueendDateUtc.Valueは親切property = DateTimeKind.Localを持っているということです。 DateTimeKind.Utc種類の日付があります。

たとえば、.ToUniversalTime()関数を適用するか、日時パラメータを処理するフィルタを実装して.ToUniversalTime()を呼び出します。しかし、これらはすべてのプロジェクトにこれらを置く必要があるので、これはうまくいかない。

Global.asaxに何らかの設定をすることができますか、または終了時に基づいてdatetime URLパラメータの一部のパーサーを実装し、例文.ToUniversalTime()を呼び出すことはできますか?あなたはあなたのためのdateTimeに

// Change the Kind property of the current moment to 
// DateTimeKind.Utc and display the result. 

    myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Utc); 
    Display("Utc: .............", myDt); 

// Change the Kind property of the current moment to 
// DateTimeKind.Local and display the result. 

    myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Local); 
    Display("Local: ...........", myDt); 

// Change the Kind property of the current moment to 
// DateTimeKind.Unspecified and display the result. 

    myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Unspecified); 
    Display("Unspecified: .....", myDt); 

を一種のUTCのプロパティを指定することができます

答えて

0

それはそう

[HttpGet] 
    [Route("{startDateUtc:datetime}/{endDateUtc:datetime}/{pageNumber?}", Name = "MyRoute")] 
    [ResponseType(typeof(List<string>))] 
    public IHttpActionResult GetData(DateTime? startDateUtc, DateTime? endDateUtc, int pageNumber = 1) 
    { 
    HandleData(DateTime.SpecifyKind(startDateUtc.Value, DateTimeKind.utc), DateTime.SpecifyKind(endDateUtc.Value, DateTimeKind.utc), pageNumber); 
    return this.Ok(); 
    } 
+0

ようにする必要があり、しかし、これはToUniversalTime()関数を使用して持つように同じです。私は約20の他のコントローラーを持っていて、同じような動作をしたいと思っています。つまり、これらの他の20個のコントロールX 3-4のルートにこの修正を適用するということです。 datetimesを扱うためのエントリーポイントを1つ持っていたい。 – Alexander

+0

UTCに変換する一般的な方法を書かないと、特定の種類に変換された日付時刻を渡すだけです。 –

+0

これをすべてのアクションに貼り付ける必要があるからです。新しいコントローラを追加したい他の開発者は、これを行う必要があります。理想的には、URLのdatetimeの解析で組み込みを行い、これにフラグを使用している場合はdatetime ORを修正したいと考えています。たとえば、JSON本体の解析には、フラグGlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandlingがあります。私のタクのために同じものがあれば、それはクールだ。 – Alexander

関連する問題