为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕尼黑的夜晚无繁华 2023-06-25 14:17:43
语境我们有一个处理时间的 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 的示例代码:
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

using System;

using System.Globalization;


namespace TestingApp

{

    class Program

    {

        static void Main(string[] args)

        {

            var tz = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");

            string[] times = {

                // In 1995 :

                //  last sunday in september was  sept. 24th

                //  last sunday in october   was   oct. 29th

                "1995/09/23 12:00:00", "1995/09/24 12:00:00",

                "1995/10/28 12:00:00", "1995/10/29 12:00:00",

            };


            foreach (var t in times) {

                var utc = DateTime.ParseExact(t, "yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None);

                utc = TimeZoneInfo.ConvertTime(utc, tz, TimeZoneInfo.Utc);


                Console.WriteLine(String.Format("Paris: {0} -> UTC: {1}", t, utc.ToString()));

            }

        }

    }

}


// Output :

//  Paris: 1995/09/23 12:00:00 -> UTC: 23/09/1995 10:00:00

//  Paris: 1995/09/24 12:00:00 -> UTC: 24/09/1995 10:00:00  <- instead of 11:00:00 UTC

//  Paris: 1995/10/28 12:00:00 -> UTC: 28/10/1995 10:00:00  <- instead of 11:00:00 UTC

//  Paris: 1995/10/29 12:00:00 -> UTC: 29/10/1995 11:00:00    


查看完整回答
反对 回复 2023-06-25
  • 1 回答
  • 0 关注
  • 54 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信