繁体   English   中英

处理javascript和WebApi 2之间的Datetime数据类型

[英]Handling Datetime datatype between javascript and WebApi 2

我想知道以下是否是在WebApi 2,Javascript和数据库中处理日期时间数据类型的正确方法。

从Javascript到WebApi的DateTime:

var date = new Date();
var datestring = date.toISOString();
//Send datestring to WebApi

从WebApi到Javascript的DateTime:

//on getting datetime value from `http.get` call 
var dateFromServer = new Date(dateFromServer); 

的WebAPI:

进入日期

  • 什么都不做只是存储数据类型为datetime数据库列中返回的datetime datestring

从数据库获取日期并将日期返回给客户:

  • 没有日期时间操作(根据WebApi Json序列化程序返回:2015-10-23T18:30:00)。 客户端会自动将UTC日期时间转换为本地日期时间

是的,如果您不想处理有关用户Timezone等的任何信息......这是一种可接受的方式。 只要确保您希望从服务器生成日期以进行比较或其他任何时候使用c# DateTime.UtcNow方法。 我认为拥有“全球UTC公约”是一个非常安全和良好的解决方案,但它有一些限制。

例如,如果您想在上午09:00(在每个用户的国家/地区)提醒位于不同时区的所有用户,则无法知道每个用户的“09:00”。

解决这个问题的一种方法(也是我更喜欢的方法)是将每个用户的时区信息分别存储在数据库中,每次想要进行比较时只需转换时间。

TimeZoneInfo.ConvertTimeFromUtc(time, this.userTimezone);

或者,如果要在服务器上存储所有时区信息,您可以:

使用以下格式将您的日期从javascript发送到服务器: “2014-02-01T09:28:56.321-10:00” ISO 8601还通过将Z替换为时区偏移的+或 - 值来支持时区。

使用“DateTimeOffset”类型声明您的WEB API 2日期类型。

最后使用“datetimeoffset”类型将日期存储在数据库中。

这样,无论何时在服务器或数据库上,您都可以获得有关用户时间和时区的所有信息。

你会发现这篇文章很有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM