您询问的是:
“旧金山下午 3:30,迪拜下午 7:30”
如果您只知道时间和地点,那么您就会遇到问题,因为并非所有时区都是固定实体。迪拜固定为 UTC+4,但旧金山在太平洋标准时间 UTC-8 和太平洋夏令时间 UTC-7 之间交替。所以一个date也需要进行此转换。
下面将为您提供使用差异current第一个时区的日期:
TimeZoneInfo tz1 = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
TimeZoneInfo tz2 = TimeZoneInfo.FindSystemTimeZoneById("Arabian Standard Time");
DateTime today = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz1).Date;
DateTime dt1 = new DateTime(today.Year, today.Month, today.Day, 15, 30, 0); // 3:30 PM
DateTime dt2 = new DateTime(today.Year, today.Month, today.Day, 19, 30, 0); // 7:30 PM
TimeSpan elapsed = TimeZoneInfo.ConvertTimeToUtc(dt1, tz1) -
TimeZoneInfo.ConvertTimeToUtc(dt2, tz2);
(注意,身份证"Pacific Standard Time"
是美国太平洋时区的 Windows 时区标识符,尽管有名称,但涵盖 PST 和 PDT。)
但即使这也不一定是最好的方法,因为“今天”在所有时区都不相同。在(几乎)任何时间点,全球范围内都有两个不同的运营日。这个插图来自维基百科 http://en.wikipedia.org/wiki/International_Date_Line很好地证明了这一点。
源时区的“当前”日期可能是not当前结束时区的同一日期。如果没有额外的输入,您对此无能为力。您需要知道每个值的相关日期。