2012-12-26 25 views
5

Trong thiết kế các ứng dụng web đặc biệt là sử dụng Asp.net MVC4 C#, một khi tôi sử dụngThời gian nào mà DateTime.Now thực sự có trong các ứng dụng web?

private DateTime currentDateTime = DateTime.Now; 

nơi nào đó trong mã của tôi và lưu currentDateTime trong một cơ sở dữ liệu; và sau đó, tôi triển khai ứng dụng của mình trên web,

Giá trị của currentDateTime là gì?

a. Ngày giờ của trình duyệt/máy tính đã mở ứng dụng của tôi (vấn đề múi giờ)

b. Ngày giờ của máy chủ mà tôi đã triển khai ứng dụng của mình (tất cả các giá trị đều nằm trong một múi giờ)

Xin lỗi, nhưng tôi chỉ mới bắt đầu trong các ứng dụng web để ứng dụng này gây nhầm lẫn cho tôi. Hy vọng bạn có thể làm rõ nó cho tôi. Cảm ơn.

Trả lời

7

Giá trị sẽ là giờ địa phương trên máy chủ. Tuy nhiên, tôi khuyên bạn nên sử dụng Universal Coordinated Time (UTC), ví dụ: DateTime.UtcNow, lý do về thời gian ngày đơn giản hơn nhiều và có nghĩa là bạn sẽ có thể lưu trữ ứng dụng của mình ở mọi nơi trên thế giới mà không ảnh hưởng xấu.

+0

Lời khuyên tuyệt vời. Hãy ghi nhớ điều này sẽ vẫn yêu cầu thông tin thời gian và múi giờ thích hợp được đặt trên máy chủ của bạn. (Điều này xuất phát từ tiếng nói của kinh nghiệm. Tôi đã phải gỡ lỗi một vấn đề phía máy chủ chỉ để phát hiện sau chúng tôi đã theo đuổi vấn đề sai - vì thời gian đăng nhập cho các sự kiện khác nhau là không chính xác). –

6

Mã ASP.Net đang thực thi trên máy chủ, do đó, nó sẽ là thời gian máy chủ.

2

Đây sẽ là thời gian trên máy chủ.

4

Câu trả lời đúng là:

b. Ngày giờ của máy chủ mà tôi đã triển khai ứng dụng của mình, vì đó là nơi mã đang thực thi.

Có một tài khoản DateTime khác, DateTime.UtcNow luôn nhận thời gian UTC.
Tôi khuyên bạn nên sử dụng ứng dụng đó cả trong ứng dụng và trong cơ sở dữ liệu (ví dụ: máy chủ sql getutcdate() in), vì nó tránh tất cả các loại vấn đề đồng bộ hóa.

Nếu bạn cần hiển thị ngày cho khách hàng, chỉ cần bù đắp thời gian đã lưu theo múi giờ của khách hàng và bạn vàng.

4

Đây sẽ là thời gian trên máy chủ, vì đó là nơi mã đang thực thi.

Thay vào đó, bạn có thể sử dụng DateTime.UtcNow vì điều này làm giảm các vấn đề múi giờ. Bạn có thể dễ dàng chuyển đổi thành giờ địa phương trên máy khách hoặc máy chủ khi bạn đi để hiển thị hoặc đánh giá thời gian.

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