c# – ConvertTimeToUtc总是关闭一个小时
我在将datetime转换为UTC时面临问题.
用户在webform中的mydate中输入日期,我们需要将其转换为UTC并将其存储在DB中. 用户还从列表中选择存储在selectedTimeZone变量中的时区.所以我们必须将mydate从selectedTimeZone转换为UTC. TimeZoneInfo.ConvertTimeToUtc(mydate,selectedTimeZone); 示例#1:
这是一个小时 实施例#2
哪个是对的 有这样的例子. 有什么问题? 编辑: 我不需要将用户输入转换为DateTime,因为.net这样做,我们在mvc动作方法参数中得到mydate. 我通过将机器的本地时区设置为UTC,伦敦,IST来尝试它,但它对输出没有影响. 解决方法
似乎给定时区的调整规则在这里发挥作用.请使用以下代码:
var mydate = new DateTime(2016,05,02,9,0); var selectedTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); var dstRule = selectedTimeZone.GetAdjustmentRules().FirstOrDefault(c => c.DateStart < mydate && c.DateEnd > mydate); EST时区只有一个调整规则在给定时间有效(从2007年开始有效),此规则适用于每年3月的第2个星期日到11月的第一个星期日,在此期间调整时间为1小时.这就是你观察这种行为的原因.如果您尝试将此日期之外的日期转换为此规则(例如,在2月份),您将获得所期望的结果. 所以澄清一下:EST时区有UTC-5的基本偏移量,但由于夏令时夏令时变为UTC-4,而且因为你的时间是“夏天” – .NET实际上正确地将它转换为UTC,所以它不是“关闭”小时”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |