2016-12-26 10 views
2

ASP MVC 4.5を使用しています。私は支払いの詳細を入力するためのビューがあります。私は現在の時間を取得するためにC#を使用します。しかし、サーバー上でそれをホストした後、私は熱いエラーを発見した。それは別のdateTime(私のサーバーの時刻かもしれない)を私のユーザーのローカル時刻ではなく取得します! C#を使用してユーザーの現在時刻を取得したいとします。私はC#またはjavascriptを使うべきですか? javascriptを使ってユーザーの時間を得るのは簡単だと思います。しかし、私はこのためにC#を使用したい。手伝って頂けますか? マイウェブAPIは:サーバー側コードの代わりにローカルdatetimeを取得サーバー側コードC#

// POST api/PaymentApi 
    public HttpResponseMessage PostPayment(Payment payment) 
    { 
     if (ModelState.IsValid) 
     { 
      var mem= db.Members.Where(m => m.MemberID.Equals(payment.MemberID)).FirstOrDefault(); 

      if (mem ==null) 
      { 
       return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); 
      } 


      payment.Date = DateTime.Now; 
      db.Payments.Add(payment); 
      db.SaveChanges(); 

      HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, payment); 
      response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = payment.PaymentID })); 
      return response; 
     } 
     else 
     { 
      return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); 
     } 
    } 

私もpayment.Date = DateTime.Now.ToLocalTime();を使用しますが働いていません!

ここでは、javascriptの日付を使用すると回答しました。それが私が使った理由です。しかし、javascriptはdatetimeを送信し、私のWebApiはそれを若干異なるものにします。
Javascriptを:Date:Tue Dec 27 2016 11:04:12 GMT+0600 (Local Standard Time) C#:例えば、ローカルホストの時計、とDate:{27/12/2016 05:04:12} enter image description here

+1

文化をチェックしましたか? –

+1

*サーバー上で*実行されている.NETコードは、*サーバー時刻*のみ表示されます。あなたがしなければならないことは、クライアント上でコードを実行してそこにいる時間を把握し、それをサーバーに送信することです。しかし、その時代はあなたのサーバーと大きく異なると思いますか?あなたは、UTC時間が欲しくないと確信していますか? –

+0

いいえ、私はちょうど支払いを提出するクライアントの時間を取得したいです。 – Fawel

答えて

0

DateTime作品サーバー。ほとんどの決済システムは、クライアント/サーバーの時間差を避けるために、UTCとの相対的な日付を保存します。

payment.Date = DateTime.UtcNow; 
+0

これからの成果は何か、リチャード? – Fawel

1

クライアントDateTimeは、クライアントがそれ自身で送信しない場合、サーバー側では取得できません。

0

サーバーからユーザーのローカル時刻を知る方法はありません。あなたがする必要があるのは、UTC形式のリクエスト内のクライアントからサーバーへの現地時間を送信することです。

Javascriptが(jqueryのが必要です):

var UTC = new Date().getTime(); 
+0

OPはJavascriptを使用していません。 –

1

あなたはJavaScriptでローカル日時を取得し、それをサーバーに渡す必要があります。 ISO8601形式を使用することをお勧めします。

関連する問題