获取本地日期时间,而不是服务器端代码中的服务器DateTime C#
我正在使用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发送日期时间,我的WebApi使它稍有不同。
的Javascript:Date:Tue Dec 27 2016 11:04:12 GMT+0600 (Local Standard Time)
C#:Date:{27/12/2016 05:04:12}
DateTime
作品与本地主机的时钟,例如服务器。大多数支付系统将日期保存为UTC,以避免客户端/服务器时间差异。
payment.Date = DateTime.UtcNow;
理查德的结果是什么? – Fawel
如果客户端不是自己发送它,在服务器端不可能获得DateTime
客户端。
有没有什么办法从服务器知道用户本地时间。您需要做的是将本地时间从客户端发送到UTC格式的请求中的服务器。
的Javascript(需要jQuery的):
var UTC = new Date().getTime();
OP没有使用Javascript。 –
你需要可以在javascript本地日期时间,并将它传递给服务器。我建议你使用ISO8601格式。
你检查了文化吗? –
在服务器*上运行*的任何.NET代码将只能看到*服务器时间*。你需要做的是在客户端上运行代码以获取那里的时间,然后将其发送到服务器。但是,是什么让你认为时间将与你的服务器有很大的不同?你确定你不想要UTC时间吗? –
不,我只是想获得客户的时间谁将提交付款。 – Fawel