簡體   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