【发布时间】:2019-06-21 03:51:53
【问题描述】:
我想显示将根据用户的时区管理的事件的日期和时间。要检查时区,我将系统时区更改为另一个时区,但我的代码仍然是本地时区。 这是我的代码
我正在使用 Cassandra 数据库和 C# .NET MVC
DateTime startTimeFormate = x.Startdate;
DateTime endTimeFormate = x.Enddate;
TimeZone zone = TimeZone.CurrentTimeZone;
DateTime startTime = zone.ToLocalTime(startTimeFormate);
DateTime endTime = zone.ToLocalTime(endTimeFormate);
【问题讨论】:
-
如果您关心时区,请至少使用
DateTimeOffset,而不是DateTime。至于您的问题,x.StartDate和x.EndDate的DateTimeKind值是多少?本地、UTC 还是未指定?ToLocalTime仅在您想将 UTC 转换为本地时才有意义。在其他情况下,唯一合乎逻辑的结果是返回与DateTimeKind的Local相同的日期时间值。 -
如果值来自数据库,它们可能是
Unspecified,因为数据库提供者不知道它们代表什么样的日期,或者使用哪个偏移量。 -
最后,要将
DateTime值从一个时区转换为另一个时区,请使用TimezoneInfo.ConvertTime