.Net6 指定时区
UTC时间
获取当前UTC时间
将UTC时间转换成中国区时间
常用时区
扩展方法
最近相当忙!忙着学这学那的,各种考试。以及项目上也有很多改动。还有这恶心的时间问题(特别注意当使用容器的时候的时间问题希望大家尽量用DateTime.UtcNow。.
UTC时间
简单来说这是一个时间的标准,像中国就是东八区,在UTC的时间之上加多少时间就是对应的中国时间(以此类推)。
获取当前UTC时间
DateTime.UtcNow;将UTC时间转换成中国区时间
var name = "China Standard Time";// 中国:China Standard Time// 意大利:W. Europe Standard Time// 获取当前时区TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById(name);// 将UTC时间转换成中国时区的时间DateTime easternTime = TimeZoneInfo.ConvertTimeFromUtc(Convert.ToDateTime(time), easternZone);string nowtime = easternTime.ToString();
那你说:我怎么知道它哪个时区叫什么名字?通过下面的代码可以获取所有的UTC时区的名字。
//查看所有地区时间信息IList<TimeZoneInfo> lines = TimeZoneInfo.GetSystemTimeZones();
//世界主要时区有如下这些(UTC-12:00) 国际日期变更线西(UTC-11:00) 协调世界时-11(UTC-10:00) 夏威夷(UTC-10:00) 阿留申群岛(UTC-09:30) 马克萨斯群岛(UTC-09:00) 协调世界时-09(UTC-09:00) 阿拉斯加(UTC-08:00) 下加利福尼亚州(UTC-08:00) 协调世界时-08(UTC-08:00) 太平洋时间(美国和加拿大)(UTC-07:00) 亚利桑那(UTC-07:00) 奇瓦瓦,拉巴斯,马萨特兰(UTC-07:00) 山地时间(美国和加拿大)(UTC-07:00) 育空(UTC-06:00) 中美洲(UTC-06:00) 中部时间(美国和加拿大)(UTC-06:00) 复活节岛(UTC-06:00) 瓜达拉哈拉,墨西哥城,蒙特雷(UTC-06:00) 萨斯喀彻温(UTC-05:00) 东部时间(美国和加拿大)(UTC-05:00) 切图马尔(UTC-05:00) 印地安那州(东部)(UTC-05:00) 哈瓦那(UTC-05:00) 波哥大,利马,基多,里奥布朗库(UTC-05:00) 海地(UTC-05:00) 特克斯和凯科斯群岛(UTC-04:00) 乔治敦,拉巴斯,马瑙斯,圣胡安(UTC-04:00) 亚松森(UTC-04:00) 加拉加斯(UTC-04:00) 圣地亚哥(UTC-04:00) 大西洋时间(加拿大)(UTC-04:00) 库亚巴(UTC-03:30) 纽芬兰(UTC-03:00) 卡宴,福塔雷萨(UTC-03:00) 圣皮埃尔和密克隆群岛(UTC-03:00) 巴西利亚(UTC-03:00) 布宜诺斯艾利斯(UTC-03:00) 格陵兰(UTC-03:00) 萨尔瓦多(UTC-03:00) 蒙得维的亚(UTC-03:00) 蓬塔阿雷纳斯(UTC-03:00) 阿拉瓜伊纳(UTC-02:00) 中大西洋 - 旧用(UTC-02:00) 协调世界时-02(UTC-01:00) 亚速尔群岛(UTC-01:00) 佛得角群岛(UTC) Coordinated Universal Time(UTC+00:00) 圣多美(UTC+00:00) 蒙罗维亚,雷克雅未克(UTC+00:00) 都柏林,爱丁堡,里斯本,伦敦(UTC+01:00) 卡萨布兰卡(UTC+01:00) 中非西部(UTC+01:00) 布鲁塞尔,哥本哈根,马德里,巴黎(UTC+01:00) 萨拉热窝,斯科普里,华沙,萨格勒布(UTC+01:00) 贝尔格莱德,布拉迪斯拉发,布达佩斯,卢布尔雅那,布拉格(UTC+01:00) 阿姆斯特丹,柏林,伯尔尼,罗马,斯德哥尔摩,维也纳(UTC+02:00) 加沙,希伯伦(UTC+02:00) 加里宁格勒(UTC+02:00) 哈拉雷,比勒陀利亚(UTC+02:00) 喀土穆(UTC+02:00) 基希讷乌(UTC+02:00) 大马士革(UTC+02:00) 安曼(UTC+02:00) 开罗(UTC+02:00) 朱巴(UTC+02:00) 温得和克(UTC+02:00) 的黎波里(UTC+02:00) 耶路撒冷(UTC+02:00) 贝鲁特(UTC+02:00) 赫尔辛基,基辅,里加,索非亚,塔林,维尔纽斯(UTC+02:00) 雅典,布加勒斯特(UTC+03:00) 伊斯坦布尔(UTC+03:00) 内罗毕(UTC+03:00) 巴格达(UTC+03:00) 明斯克(UTC+03:00) 科威特,利雅得(UTC+03:00) 莫斯科,圣彼得堡(UTC+03:30) 德黑兰(UTC+04:00) 伊热夫斯克,萨马拉(UTC+04:00) 伏尔加格勒(UTC+04:00) 埃里温(UTC+04:00) 巴库(UTC+04:00) 第比利斯(UTC+04:00) 萨拉托夫(UTC+04:00) 路易港(UTC+04:00) 阿布扎比,马斯喀特(UTC+04:00) 阿斯特拉罕,乌里扬诺夫斯克(UTC+04:30) 喀布尔(UTC+05:00) 伊斯兰堡,卡拉奇(UTC+05:00) 克孜洛尔达(UTC+05:00) 叶卡捷琳堡(UTC+05:00) 阿什哈巴德,塔什干(UTC+05:30) 斯里加亚渥登普拉(UTC+05:30) 钦奈,加尔各答,孟买,新德里(UTC+05:45) 加德满都(UTC+06:00) 达卡(UTC+06:00) 鄂木斯克(UTC+06:00) 阿斯塔纳(UTC+06:30) 仰光(UTC+07:00) 克拉斯诺亚尔斯克(UTC+07:00) 巴尔瑙尔,戈尔诺-阿尔泰斯克(UTC+07:00) 托木斯克(UTC+07:00) 新西伯利亚(UTC+07:00) 曼谷,河内,雅加达(UTC+07:00) 科布多(UTC+08:00) 乌兰巴托(UTC+08:00) 伊尔库茨克(UTC+08:00) 北京,重庆,香港特别行政区,乌鲁木齐(UTC+08:00) 台北(UTC+08:00) 吉隆坡,新加坡(UTC+08:00) 珀斯(UTC+08:45) 尤克拉(UTC+09:00) 大阪,札幌,东京(UTC+09:00) 平壤(UTC+09:00) 赤塔市(UTC+09:00) 雅库茨克(UTC+09:00) 首尔(UTC+09:30) 达尔文(UTC+09:30) 阿德莱德(UTC+10:00) 关岛,莫尔兹比港(UTC+10:00) 堪培拉,墨尔本,悉尼(UTC+10:00) 布里斯班(UTC+10:00) 符拉迪沃斯托克(UTC+10:00) 霍巴特(UTC+10:30) 豪勋爵岛(UTC+11:00) 乔库尔达赫(UTC+11:00) 布干维尔岛(UTC+11:00) 所罗门群岛,新喀里多尼亚(UTC+11:00) 萨哈林(UTC+11:00) 诺福克岛(UTC+11:00) 马加丹(UTC+12:00) 协调世界时+12(UTC+12:00) 奥克兰,惠灵顿(UTC+12:00) 彼得罗巴甫洛夫斯克-堪察加 - 旧用(UTC+12:00) 斐济(UTC+12:00) 阿纳德尔,堪察加彼得罗巴甫洛夫斯克(UTC+12:45) 查塔姆群岛(UTC+13:00) 努库阿洛法(UTC+13:00) 协调世界时+13(UTC+13:00) 萨摩亚群岛(UTC+14:00) 圣诞岛
然后给你们写几个常用的时区。
常用时区
| 国家 | 代码 | 时区ID | 标准名称 |
|---|---|---|---|
| 美国 | US | Pacific Standard Time | 太平洋标准时间 |
| 英国 | GB | GMT Standard Time | GMT 标准时间 |
| 德国 | DE | W. Europe Standard Time | 西欧标准时间 |
| 法国 | FR | Romance Standard Time | 罗马标准时间 |
| 日本 | JP | Tokyo Standard Time | 东京标准时间 |
| 意大利 | IT | W. Europe Standard Time | 西欧标准时间 |
| 西班牙 | ES | Romance Standard Time | 罗马标准时间 |
| 加拿大 | CA | Pacific Standard Time | 太平洋标准时间 |
| 墨西哥 | MX | Central Standard Time (Mexico) | 中部标准时间(墨西哥) |
| 中国 | CN | China Standard Time | 中国标准时间 |
| 澳大利亚 | AU | E. Australia Standard Time | 东部澳大利亚标准时间 |
扩展方法
public static class DateZoneTimeExtension{public enum LocalTimeZoneEnum{China = 1050,Italy = 1000,US = 1100,}static string LocalTimeZoneEnumLong(LocalTimeZoneEnum time) => time switch{LocalTimeZoneEnum.China => "China Standard Time",LocalTimeZoneEnum.Italy => "W. Europe Standard Time",LocalTimeZoneEnum.US => "Pacific Standard Time",_ => throw new NotImplementedException()};public static DateTime ToLocalTimeZone(this DateTime time, LocalTimeZoneEnum localTimeZoneEnum){TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById(LocalTimeZoneEnumLong(localTimeZoneEnum));DateTime easternTime = TimeZoneInfo.ConvertTimeFromUtc(time, easternZone);return easternTime;}}
注意:必须通过DateTime.UtcNow来调扩展方法哟,然后需要哪些自己取舍