时区和夏令时

一个项目在西欧,之前取时间简单用DateTime.UtcNow.AddHours(1); //西欧都是在第1时区.

3月份之前都正确,但欧盟国家和瑞士都是从3月最后一个星期日到10月最后一个星期日实行夏令时。在格林尼治时间三月最后一个星期日的2:00欧盟国家同时进行时间更改。

4月份之后就差了一个小时,也就是说DateTime.UtcNow取得的时间是不带夏令时的。

所以要用TimeZoneInfo类来解决时区问题。下面的代码就可以对比差别了。

            DateTime dtNow = DateTime.UtcNow.AddHours(1); //西欧
            Console.WriteLine("DateTime.UtcNow=" + DateTime.UtcNow.ToString());
            Console.WriteLine("dtNow=" + dtNow.ToString());

            DateTime dt = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(
                DateTime.UtcNow,"UTC","W. Europe Standard Time");
            Console.WriteLine("TimeZone dt =" + dt.ToString());

TimeZoneId怎样知道呢?

foreach (TimeZoneInfo timeZoneInfo in TimeZoneInfo.GetSystemTimeZones())
{

    Console.WriteLine(timeZoneInfo.DisplayName);
    Console.WriteLine(timeZoneInfo.Id);

}

结果如下:

(UTC-12:00) 国际日期变更线以西 
Dateline Standard Time

(UTC-11:00) 国际标准时间-11 
UTC-11

(UTC-10:00) 夏威夷 
Hawaiian Standard Time

(UTC-09:00) 阿拉斯加 
Alaskan Standard Time

(UTC-08:00) 下加利福尼亚 
Pacific Standard Time (Mexico)

(UTC-08:00) 太平洋时间 (美国和加拿大) 
Pacific Standard Time

(UTC-07:00) 亚历桑那 
US Mountain Standard Time

(UTC-07:00) 山区时间 (美国和加拿大) 
Mountain Standard Time

(UTC-07:00) 齐骅华,拉帕兹,马札特兰 
Mountain Standard Time (Mexico)

(UTC-06:00) 中美洲 
Central America Standard Time

(UTC-06:00) 中部时间 (美国和加拿大) 
Central Standard Time

(UTC-06:00) 瓜达拉加若,墨西哥城,蒙特利 
Central Standard Time (Mexico)

(UTC-06:00) 萨克其万 (加拿大) 
Canada Central Standard Time

(UTC-05:00) 印第安纳 (东部) 
US Eastern Standard Time

(UTC-05:00) 东部时间 (美国和加拿大) 
Eastern Standard Time

(UTC-05:00) 波哥大,利马,基多 
SA Pacific Standard Time

(UTC-04:30) 卡拉卡斯 
Venezuela Standard Time

(UTC-04:00) 亚松森 
Paraguay Standard Time

(UTC-04:00) 佐治敦,拉帕兹,玛瑙斯,圣胡安 
SA Western Standard Time

(UTC-04:00) 古雅巴 
Central Brazilian Standard Time

(UTC-04:00) 大西洋时间 (加拿大) 
Atlantic Standard Time

(UTC-04:00) 圣地亚哥 
Pacific SA Standard Time

(UTC-03:30) 纽芬兰 
Newfoundland Standard Time

(UTC-03:00) 巴西利亚 
E. South America Standard Time

(UTC-03:00) 布宜诺斯艾利斯 
Argentina Standard Time

(UTC-03:00) 格陵兰 
Greenland Standard Time

(UTC-03:00) 蒙特维多 
Montevideo Standard Time

(UTC-03:00) 萨尔瓦多 
Bahia Standard Time

(UTC-03:00) 开云,福塔力沙 
SA Eastern Standard Time

(UTC-02:00) 国际标准时间-02 
UTC-02

(UTC-02:00) 大西洋中部 
Mid-Atlantic Standard Time

(UTC-01:00) 亚速尔群岛 
Azores Standard Time

(UTC-01:00) 维德角群岛 
Cape Verde Standard Time

(UTC) 卡萨布兰卡 
Morocco Standard Time

(UTC) 国际标准时间 
UTC

(UTC) 蒙罗维亚,雷克雅维克 
Greenwich Standard Time

(UTC) 都柏林,爱丁堡,里斯本,伦敦 
GMT Standard Time

(UTC+01:00) 中西非 
W. Central Africa Standard Time

(UTC+01:00) 塞拉耶佛,斯高彼亚,华沙,札格雷布 
Central European Standard Time

(UTC+01:00) 布鲁塞尔,哥本哈根,马德里,巴黎 
Romance Standard Time

(UTC+01:00) 温吐克 
Namibia Standard Time

(UTC+01:00) 贝尔格勒,布拉提斯拉瓦,布达佩斯,卢布亚纳,布拉格 
Central Europe Standard Time

(UTC+01:00) 阿姆斯特丹,柏林,伯恩,罗马,斯德哥尔摩,维也纳 
W. Europe Standard Time

(UTC+02:00) 伊斯坦堡 
Turkey Standard Time

(UTC+02:00) 哈拉雷,皮托里 
South Africa Standard Time

(UTC+02:00) 大马士革 
Syria Standard Time

(UTC+02:00) 东欧 
E. Europe Standard Time

(UTC+02:00) 耶路撒冷 
Israel Standard Time

(UTC+02:00) 贝鲁特 
Middle East Standard Time

(UTC+02:00) 赫尔辛基,凯耶夫,里加,苏非亚,塔林,维尔纽斯 
FLE Standard Time

(UTC+02:00) 开罗 
Egypt Standard Time

(UTC+02:00) 雅典,布加勒斯特 
GTB Standard Time

(UTC+03:00) 卡里宁格勒,明斯克 
Kaliningrad Standard Time

(UTC+03:00) 奈洛比 
E. Africa Standard Time

(UTC+03:00) 安曼 
Jordan Standard Time

(UTC+03:00) 巴格达 
Arabic Standard Time

(UTC+03:00) 科威特,利雅德 
Arab Standard Time

(UTC+03:30) 德黑兰 
Iran Standard Time

(UTC+04:00) 巴库 
Azerbaijan Standard Time

(UTC+04:00) 第比利斯 
Georgian Standard Time

(UTC+04:00) 莫斯科,圣彼得堡,伏尔加格勒 
Russian Standard Time

(UTC+04:00) 叶里温 
Caucasus Standard Time

(UTC+04:00) 路易斯港 
Mauritius Standard Time

(UTC+04:00) 阿布达比,马斯喀特 
Arabian Standard Time

(UTC+04:30) 喀布尔 
Afghanistan Standard Time

(UTC+05:00) 伊斯兰马巴德,克洛奇 
Pakistan Standard Time

(UTC+05:00) 塔什干 
West Asia Standard Time

(UTC+05:30) 斯里哈亚华登尼普拉 
Sri Lanka Standard Time

(UTC+05:30) 辰内,加尔各答,孟拜,新德里 
India Standard Time

(UTC+05:45) 加德满都 
Nepal Standard Time

(UTC+06:00) 伊卡特林堡 
Ekaterinburg Standard Time

(UTC+06:00) 达卡 
Bangladesh Standard Time

(UTC+06:00) 阿斯坦纳 
Central Asia Standard Time

(UTC+06:30) 仰光 
Myanmar Standard Time

(UTC+07:00) 曼谷,河内,雅加达 
SE Asia Standard Time

(UTC+07:00) 诺曼斯比尔斯科 
N. Central Asia Standard Time

(UTC+08:00) 伯斯 
W. Australia
Standard Time

(UTC+08:00) 克拉斯诺亚尔斯克 
North Asia Standard Time

(UTC+08:00) 北京,重庆,香港特别行政区,乌鲁木齐 
China Standard Time

(UTC+08:00) 台北 
Taipei Standard Time

(UTC+08:00) 吉隆坡,新加坡 
Singapore Standard Time

(UTC+08:00) 库伦 
Ulaanbaatar Standard Time

(UTC+09:00) 伊尔库次克 
North Asia East Standard Time

(UTC+09:00) 大阪,北海道,东京 
Tokyo Standard Time

(UTC+09:00) 首尔 
Korea Standard Time

(UTC+09:30) 爱德兰 
Cen. Australia
Standard Time

(UTC+09:30) 达尔文 
AUS Central Standard Time

(UTC+10:00) 亚库兹克 
Yakutsk Standard Time

(UTC+10:00) 堪培拉,墨尔本,雪梨 
AUS Eastern Standard Time

(UTC+10:00) 布里斯本 
E. Australia
Standard Time

(UTC+10:00) 关岛,穆尔斯贝港 
West Pacific Standard Time

(UTC+10:00) 霍巴特 
Tasmania Standard Time

(UTC+11:00) 海参威 
Vladivostok Standard Time

(UTC+11:00) 索罗门群岛,新喀里多尼亚群岛 
Central Pacific Standard Time

(UTC+12:00) 国际标准时间+12 
UTC+12

(UTC+12:00) 奥克兰,威灵顿 
New Zealand Standard Time

(UTC+12:00) 彼得保罗夫斯克-堪察加斯克 - 已过时 
Kamchatka Standard Time

(UTC+12:00) 斐济 
Fiji Standard Time

(UTC+12:00) 马加丹 
Magadan Standard Time

(UTC+13:00) 努瓜娄发 
Tonga Standard Time

(UTC+13:00) 萨摩亚 
Samoa Standard Time

时间: 2024-10-18 21:18:17

时区和夏令时的相关文章

程序里的国际时区和夏令时

UTC和GMT到底是什么 gmt和utc都是标准时间. GMT是比较古老的时间较量标准,根据地球公转自转计算时间.UTC则是根据原子钟来计算时间,现在基本都用UTC时间.时区的设置之前研究过https://java-er.com/blog/php-utc-time-default-set/,本文主要研究夏令时 夏令时计算有几个坑,需注意: 1) 时间服务器返回的时间为1900距今的秒数,而我们需要借助unix时间函数转为可读的时间 ,因此需要先把这个时间减去70年(2208988800s). 2

夏令时 DST (Daylight Saving Time) java中的夏令时【转】

1916年,德国首先实行夏令时,英国因为怕德国会从中得到更大的效益,因此紧跟着也采取了夏令时 1986年至1991年,中华人民共和国在全国范围实行了六年夏令时 サマータイム 夏時間(日本现在没有实行夏令时,但是在美国驻军的1948年?1951年使用了夏令时) 一下内容来源:http://blog.csdn.net/java2000_net/article/details/4362316 =======================================================

每天进步一点点——Linux系统时间来处理

转载请注明出处:http://blog.csdn.net/cywosp/article/details/25839551 在程序中时间处理往往是一个麻烦的事.Linux系统提供了非常多关于时间处理的函数,我们能够用这些函数来完毕我们所须要的功能.那么在程序中通常会关心哪些时间问题呢? 真实时间:程序执行的时间,即程序启动到程序消亡所用时间或程序执行到如今所经过的时间 进程时间:一个进程所使用的CPU时间总量.适用于对程序.算法性能的检查或优化 本文仅仅关注真实时间的处理与转换 一.Epoch 不

java的系统时间,怎么计算从现在到凌晨还剩下多少时间?

Apache commons-lang3 long milliSecondsLeftToday = 86400000 - DateUtils.getFragmentInMilliseconds(Calendar.getInstance(), Calendar.DATE); System.currentTimeMillis() 是零时区的时间戳,所以你要加上8个小时才行.最基础的写法: public class Main { public static void main(String[] arg

经常使用时间函数总结

在计算机中,时间通常有三个作用:表示时间.计时和定时.本文将主要介绍一些经常使用的表示时间的函数,以及他们之间的转换,对于其他的使用方法,在兴许中补充. 一.基本概念 1. 世界标准时间(UTC, Coorainated Universal Time)是最基本的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标注年时间(GMT,Greenwich Mean Time),在大多数场合,UTC与GMT等同,仅仅是GMT不再由科学界精确定义. 2. 本地时间(Local time)指相对

【转】Cloudera Hue Issues

转自 http://molisa.iteye.com/blog/1953390   我主要是根据这个说明调整的HUE的时区问题 在使用Cloudera Hue时遇到一问题: 1. 使用Sqoop导入功能时,由于配置错误,使得“保存运行”后Job并不能正常提交,且界面上没有相关提示: 使用Hue的Sqoop shell -> start job --jid * 提交会出现一些错误提示 然后再去/var/log/sqoop/里面查看log 2. 第二个问题是在使用Job Designer设计Sqoo

常用时间函数总结

在计算机中,时间通常有两个作用:表示时间和计时.本文将主要介绍一些常用的表示时间的函数,以及他们之间的转换,对于计时的用法,在后续中补充. 一.基本概念 1. 世界标准时间(UTC, Coorainated Universal Time)是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标注年时间(GMT,Greenwich Mean Time),在大多数场合,UTC与GMT等同,只是GMT不再由科学界精确定义. 2. 本地时间(Local time)指相对于UTC/GMT

结构体指针传参与返回值

结构体指针 结构体指针大家想必都非常清楚,我们也一直强调传参的时候使用结构体指针(占用4字节),减少对栈的压力.但是今天看linux的标准io时候.发现了localtime时间函数 返回值是一个结构体指针.当时有点懵逼了,开始觉得这样就不对.{当然肯定是我想多了} 为什么会觉得不对那?因为它是个子函数,返回一个局部变量的地址显然是没有价值的.函数调用完就被释放了呀.你在用指针承接也没有价值,完全是野指针啊.百度了一下还真的有人在么做,结果出现了问题.但是其实我的想法是错误的.人家大神怎么可能犯这

每天进步一点点——Linux系统中的时间处理

转载请说明出处:http://blog.csdn.net/cywosp/article/details/25839551 在程序中时间处理往往是一个麻烦的事,Linux系统提供了很多关于时间处理的函数,我们可以用这些函数来完成我们所需要的功能.那么在程序中一般会关心哪些时间问题呢? 真实时间:程序运行的时间,即程序启动到程序消亡所用时间或程序运行到现在所经过的时间 进程时间:一个进程所使用的CPU时间总量,适用于对程序.算法性能的检查或优化 本文只关注真实时间的处理与转换 一.Epoch 无论地