猿问

我应该在法国使用哪个时区来支持新旧夏令时调整?

语境

我们有一个处理时间的 C# 程序。

我们在法国有客户,因此我们会在法国时区之间转换时间。

在我们的 C# 代码中:我们使用Central European Standard Time法国作为时区。

它描述了一个时区,遵循 DST 更改:

  • 三月的最后一个星期日(凌晨 3 点),切换夏令时的时钟向前拨动 1 小时

  • 十月的最后一个星期日(凌晨 3 点),时钟切换为冬令时并向后移动 1 小时

我们的情况

事实是:法国于 1996 年与 CEST 保持一致;在此日期之前,法国将于九月
的最后一个星期日从夏令时切换为冬令时。

Window 的CEST时区(准确地)描述了 CEST,这恰好不 100% 相当于 1995 年 10 月之前日期的法国时区。

在测试IANA 数据库(在 Linux 的 Windows 子系统中)时,结果发现欧洲/巴黎时区在 9 月底准确地切换了 < 1995 年的日期。

问题

有没有:

  • Europe/ParisWindow 标准时区列表中时区的表示?

  • 一种从 C# 使用 IANA 数据库(和欧洲/巴黎)的方法?


我们用来将时间转换为 UTC 的示例代码:


慕尼黑的夜晚无繁华
浏览 90回答 1
1回答

www说

using System;using System.Globalization;namespace TestingApp{&nbsp; &nbsp; class Program&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; static void Main(string[] args)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var tz = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string[] times = {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // In 1995 :&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; last sunday in september was&nbsp; sept. 24th&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; last sunday in october&nbsp; &nbsp;was&nbsp; &nbsp;oct. 29th&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "1995/09/23 12:00:00", "1995/09/24 12:00:00",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "1995/10/28 12:00:00", "1995/10/29 12:00:00",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; };&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach (var t in times) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var utc = DateTime.ParseExact(t, "yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; utc = TimeZoneInfo.ConvertTime(utc, tz, TimeZoneInfo.Utc);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Console.WriteLine(String.Format("Paris: {0} -> UTC: {1}", t, utc.ToString()));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}// Output ://&nbsp; Paris: 1995/09/23 12:00:00 -> UTC: 23/09/1995 10:00:00//&nbsp; Paris: 1995/09/24 12:00:00 -> UTC: 24/09/1995 10:00:00&nbsp; <- instead of 11:00:00 UTC//&nbsp; Paris: 1995/10/28 12:00:00 -> UTC: 28/10/1995 10:00:00&nbsp; <- instead of 11:00:00 UTC//&nbsp; Paris: 1995/10/29 12:00:00 -> UTC: 29/10/1995 11:00:00&nbsp; &nbsp;&nbsp;
随时随地看视频慕课网APP
我要回答