javascript - 处理javascript和WebApi 2之间的日期时间数据类型

标签 javascript c# datetime asp.net-web-api

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

从 Javascript 到 WebApi 的 DateTime:

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

从 WebApi 到 Javascript 的日期时间:

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

网络接口(interface):

Incoming date

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

Getting date from database and Returning date to client:

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

最佳答案

是的,如果您不想处理有关用户时区等的任何信息...这是一种可接受的方式。 只需确保任何时候您想要从服务器生成的日期进行比较或其他使用 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" 类型将您的日期存储在数据库中。

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

你会发现this article 有用

关于javascript - 处理javascript和WebApi 2之间的日期时间数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33340908/

相关文章:

javascript - 为什么我的 Sprite 表在 CSS 中根本不动?

javascript - 由于 CORS 访问限制本地 mp3 文件,MediaElementAudioSource 输出零

swift - 如何在 ios swift 中将 UNIX 纪元时间转换为日期和时间

python - 使用 Python 的 matplotlib 在 x 轴上绘制时间

javascript - 捕获 'Origin is not allowed by Access-Control-Allow-Origin' 错误

javascript - 如何在 webpack 中运行 run --history-api-fallback

c# - 如何查找鼠标单击是否在 wf 面板中呈现的图像上?

c# - 如何在 ASP.net 中执行一次方法

c# - WPF 自定义复合用户控件

php - 计算 PHP DatePeriod() 的迭代次数