2015-10-26 14 views
8

Tôi muốn biết liệu đây có phải là phương pháp phù hợp để xử lý kiểu dữ liệu datetime trong WebApi 2, Javascript và cơ sở dữ liệu hay không.Xử lý datatype datetime giữa javascript và WebApi 2

DateTime từ Javascript để WebAPI:

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

DateTime từ WebAPI để javascript:

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

WebAPI:

Incoming da te

  • không làm gì cả chỉ đơn giản là lưu trữ các datestring trả lại trong cột cơ sở dữ liệu với datatype datetime

ngày từ cơ sở dữ liệu Bắt và Trở ngày cho khách hàng:

  • không datetime thao tác (chỉ cần trở lại theo trình tự nối tiếp WebApi Json cũ: 2015-10-23 T18: 30: 00). Khách hàng sẽ tự động chuyển đổi datetime UTC thành datetime địa phương

Trả lời

8

Có nếu bạn không muốn xử lý bất kỳ thông tin nào về múi giờ của người dùng vv ... đây là một cách chấp nhận được. Chỉ cần đảm bảo rằng bất kỳ lúc nào bạn muốn một ngày được tạo từ máy chủ để so sánh hoặc một cái gì đó khác để sử dụng phương thức C# DateTime.UtcNow . Tôi nghĩ rằng có một "Công ước UTC toàn cầu" là một giải pháp khá an toàn và tốt nhưng nó có một số giới hạn.

Ví dụ: nếu bạn muốn Thông báo cho tất cả người dùng của mình ở các múi giờ khác nhau lúc 09:00 sáng (trên mỗi quốc gia của người dùng) thì không thể biết thời điểm "09:00" cho mỗi quốc gia.

Một cách để giải quyết điều này (và đó là cách tôi thích), là lưu trữ thông tin múi giờ của từng người dùng một cách riêng biệt trên cơ sở dữ liệu và mỗi lần bạn muốn so sánh chỉ đơn giản là chuyển đổi thời gian.

TimeZoneInfo.ConvertTimeFromUtc(time, this.userTimezone); 

Ngoài ra nếu bạn muốn lưu trữ tất cả thông tin múi giờ trên máy chủ bạn có thể:

Gửi ngày của bạn từ javascript đến máy chủ bằng cách sử dụng định dạng sau: "2014-02-01T09: 28: 56.321-10: 00 " ISO 8601 cũng hỗ trợ các múi giờ bằng cách thay thế giá trị Z bằng + hoặc - cho bù trừ múi giờ.

Khai báo API WEB 2 Loại ngày với "DateTimeOffset" loại.

Cuối cùng lưu trữ ngày của bạn trong cơ sở dữ liệu bằng cách sử dụng loại "datetimeoffset".

Bằng cách này bất cứ lúc nào trên máy chủ hoặc cơ sở dữ liệu bạn có tất cả thông tin về múi giờ và múi giờ của người dùng.

Bạn sẽ tìm thấy this article hữu ích

Các vấn đề liên quan