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

处理javascript和WebApi 2之间的Datetime数据类型,javascript,c#,datetime,asp.net-web-api,Javascript,C#,Datetime,Asp.net Web Api,我想知道以下是否是处理WebAPI2、Javascript和数据库中的datetime数据类型的正确方法 从Javascript到WebApi的日期时间: var date = new Date(); var datestring = date.toISOString(); //Send datestring to WebApi //on getting datetime value from `http.get` call var dateFromServer = new Date(dat

我想知道以下是否是处理WebAPI2、Javascript和数据库中的datetime数据类型的正确方法

从Javascript到WebApi的日期时间:

var date = new Date();
var datestring = date.toISOString();
//Send datestring to WebApi
//on getting datetime value from `http.get` call 
var dateFromServer = new Date(dateFromServer); 
从WebApi到Javascript的日期时间:

var date = new Date();
var datestring = date.toISOString();
//Send datestring to WebApi
//on getting datetime value from `http.get` call 
var dateFromServer = new Date(dateFromServer); 
WebApi:

var date = new Date();
var datestring = date.toISOString();
//Send datestring to WebApi
//on getting datetime value from `http.get` call 
var dateFromServer = new Date(dateFromServer); 
入境日期

  • 不执行任何操作只需将返回的
    datestring
    存储在数据库列中,数据类型为
    datetime
从数据库获取日期并将日期返回到客户端:

  • 无日期时间操作(只需按照WebApi Json序列化程序ex:2015-10-23T18:30:00返回)。客户端将自动将UTC日期时间转换为本地日期时间

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

例如,如果您希望在上午9: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”类型将日期存储在数据库中

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

你会发现有用的