.NET 6 指定时区(最全时区)

  • .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来调扩展方法哟,然后需要哪些自己取舍