Nhiều câu trả lời ở đây chỉ ra việc lưu trữ như UTC. Nhưng hãy thực sự cẩn thận với điều này. Chẳng hạn, nếu bạn lên lịch một cuộc hẹn lúc 12:00 nhưng cuộc hẹn diễn ra sau khi thay đổi thời gian tiết kiệm ánh sáng ban ngày thì chuyện gì sẽ xảy ra? UTC không giữ bất kỳ thông tin nào về việc dst có hoạt động khi cuộc hẹn được lưu trữ hay không. Rất nhiều hệ thống lớn, nổi tiếng đã mắc phải lỗi này, trong đó người dùng gửi email vào lúc 9 giờ sáng mùa hè và sau đó vào mùa đông, thời gian gửi hiển thị là 8 giờ sáng, vì tính toán trở lại từ UTC phụ thuộc vào thời điểm bạn nhìn vào thời gian, không bật khi datetime được ghi lại.
Tốt hơn nhiều là giả sử người dùng của bạn muốn có những lần anh ta chọn luôn. Không chuyển đổi UTC, không chuyển đổi thời gian, không thông tin múi giờ, không có gì. Lấy hẹn từ 08:00 đến 12:00 ngày 21 tháng 3 năm 2016 chỉ có thế. Không sử dụng giờ địa phương hoặc giờ UTC, nhưng thời gian không xác định (trong json, điều này không có z hay +, về cơ bản, trong .NET, điều này có DateTime.Kind = DateTimeKind.Unspecified).
Tất nhiên, nếu trường hợp sử dụng của bạn là bạn là một công ty tổ chức các cuộc họp với ai đó từ các múi giờ khác nhau và bạn muốn xem thông tin này trong lịch công ty, nhưng cho phép người dùng xem thời gian trong múi giờ của họ, thì đó là trở nên phức tạp hơn Thời gian phải chính xác cho những người khác nhau trong các múi giờ khác nhau (nhà cung cấp và khách hàng).
Trong những trường hợp đó, bạn thậm chí có thể muốn ghi lại khi cuộc hẹn được lưu vào cơ sở dữ liệu, theo múi giờ nào và có bao gồm dst hay không. Bằng cách đó, bạn luôn có thể tính lại thời gian địa phương cho bất kỳ điều gì khác, cho đến bây giờ hoặc với những gì nó được dự định là trong lịch sử. Bởi vì các múi giờ rất nhiều không tĩnh, làm cho mọi thứ thậm chí còn phức tạp hơn.
May mắn thay, đây là nơi các thư viện như http://nodatime.org/ đến và rất được khuyến khích. Họ làm việc với ngày ổn định hơn nhiều. Thậm chí sau đó tôi sẽ khuyên bạn nên gói tất cả các biến và logic thời gian của bạn trong các trình bao bọc của riêng bạn, sử dụng các giao diện để chúng có thể được chế giễu, và sau đó bạn vẫn có thể chuyển đổi logic sau này.