深圳网站建设公司团队建站园
深圳网站建设公司团队,建站园,一个完整的网站建设过程,抓取wordpress中的 图片先说下结论#xff1a;如果系统不考虑全球化的话#xff0c;那么我们不用考虑时区的问题#xff0c;因为我们可以认为中国境内的计算机全部用的是北京时间。1. 时区的来源和划分地球自转一圈是360度#xff0c;共24小时#xff0c;所以1小时15度#xff0c;即#xff1a… 先说下结论如果系统不考虑全球化的话那么我们不用考虑时区的问题因为我们可以认为中国境内的计算机全部用的是北京时间。1. 时区的来源和划分地球自转一圈是360度共24小时所以1小时15度即15度就是1个时区。国际定义了本初子午线0度经线的位置在英国伦敦格林尼治天文台自然世界时UTC也是指的格林尼治天文台GMT那里的时间。认为北京处在东经120度线上也就是东八区上所以北京相比UTC时间有8个小时的时差。由于地球自西向东转所以北京比格林尼治最先接触阳光自然就认为北京的时间比格林尼治快8个小时。比如说2020-01-01 00:00:00 00:00表示格林尼治此时正值午夜凌晨。但用北京时间表示为 2020-01-01 00:08:00 08:00即北京此时天已经亮了人们正在准备上班。为什么会有北京时间全世界都用一个UTC时间不就行嘛世界那么大各地都有自己的习惯如果突然统一起来真的不习惯。比如说按照UTC时间我们应该午夜凌晨正在上班的路上这听起来就很疯狂。。。2. 全国统一用北京时间吗新疆的也用北京时间1949年建国后国家就规定统一用北京时间了。新疆地区仅少部分本地居民使用新疆时间但一般默认是北京时间不过发布新闻的时候仍能看到“北京时间”、“新疆时间”的字样。为什么新疆要使用北京时从时区上来看它们相差有2个时区呢解释比如说奥运会八点开始那么北京新闻就报道八点开始新疆报道十点开始四川报道九点开始各地都不同这样不就乱了套吗所以就有了北京时间这个统一标准。统一时间后生活作息会有什么差别上午北京8:00–12:00新疆10:00–14:00下午北京1:30–17:30新疆1530–19:30另外对于北京的人感官上有新疆天黑的晚、上班晚。但其实是一样的只不过北京的人习惯了6:30就天亮18:00就天黑而已。3. 如果需要国际化该如何使用时间前提http请求头中虽然有关于语言中文简体、英文的信息但是没有携带客户端时区的信息。既然如此我们就要在服务端统一一种时区这样方便我们开发调试因为是国人开发的应用所以就用北京时间即可。剩下的就是客户端了因为服务端无法预料客户端的时区所以为了方便统一开发我们可以统一返回携带时区信息的北京时间客户端接收后自行转换即可。常用的携带时区的时间有下面两种格式2020-01-02T01:08:07Z2020-01-02 09:08:07 08:00针对这两种格式的转换示例如下//北京时间(东八区): 2020-01-02 09:08:07.123var baseTime new DateTimeOffset(2020, 01, 02, 09, 08, 07, 123, TimeSpan.FromHours(8));//常规输出: 不考虑时区var str baseTime.ToString(yyyy-MM-dd hh:mm:ss);//2020-01-02 09:08:07str baseTime.ToString(yyyy-MM-dd hh:mm:ss.fff);//2020-01-02 09:08:07.123//考虑时区,形式1str baseTime.ToUniversalTime().ToString(yyyy-MM-ddThh:mm:ssZ);//2020-01-02T01:08:07Zstr baseTime.ToUniversalTime().ToString(yyyy-MM-ddThh:mm:ss.fffZ);//2020-01-02T01:08:07.123Z//考虑时区,形式2str baseTime.ToString(yyyy-MM-dd HH:mm:ss zzz);//2020-01-02 09:08:07 08:00str baseTime.ToString(yyyy-MM-dd HH:mm:ss.fff zzz);//2020-01-02 09:08:07.123 08:00//如果当前计算机设置的时区是北京时间(东八区)则输出为true,否则输出falsevar parse1 DateTimeOffset.Parse(2020-01-02 09:08:07.123);Console.WriteLine($parse1baseTime: {parse1 baseTime});//输出truevar parse2 DateTimeOffset.Parse(2020-01-02T01:08:07.123Z);Console.WriteLine($parse2baseTime: {parse2 baseTime});//输出truevar parse3 DateTimeOffset.Parse(2020-01-02 09:08:07.123 08:00);Console.WriteLine($parse3baseTime: {parse3 baseTime});4. 那么c#中的DataTime和DataTimeOffset有什么差别相同点它们两个都存储了年、月、日、时、分、秒、毫秒信息。区别点DateTimeOffset中还存储了时区信息而DateTime中未存储时区信息它总是认为自己存储的时间的时区是当前计算机设置的时区5. 以sqlserver为例看数据库中如何存储时间sqlserver中的关于时间的类型如下date3字节表示范围0001-01-01 到 9999-12-31datetime8字节表示范围1753-01-01 00:00:00 到 9999-12-31 23:59:59datetime26-8个字节表示范围0001-01-01 00:00:00 到 9999-12-31 23:59:59.9999999smalldatetime4个字节表示范围1900-01-01 00:00:00 到 2079-06-06 23:59:59time5个字节表示范围00:00:00.0000000 到 23:59:59.9999999datetimeoffset10个字节表示范围0001-01-01 00:00:00 到 23:59:59.9999999可表示时区通过上面列举我们可以发现除非我们使用datetimeoffset否则我们是无法保存时区信息的。其实对于服务器来说数据库中存不存储时区并不是那么重要只要保证web服务器、数据库服务器设置的时区一致即可推荐sqlserver中使用datetime2。另外一般我们常设计列的类型为datetime而不是datetime2。其实这有个隐患当程序中使用DateTime的默认值即0000-01-01时我们无法插入到数据库中报错如下“从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值”这个报错在文章《c# SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值》中有专门说明。6. 浏览器端如何显示时间在 上面【3. 如果需要国际化该如何使用时间】中建议后端返回的时间携带时区信息也就是下面两种格式2020-01-02T01:08:07Z2020-01-02 09:08:07 08:00那么前端应该怎么显示呢幸运的是js脚本可以直接解析上面两种类型的时间看下面代码 new Date(Date.parse(2020-01-02 09:08:07 08:00)).toDateString() Thu Jan 02 2020 new Date(Date.parse(2020-01-02 09:08:07 08:00)).toTimeString() 09:08:07 GMT0800 (中国标准时间) new Date(Date.parse(2020-01-02T01:08:07Z)).toLocaleDateString() 2020/1/2 new Date(Date.parse(2020-01-02T01:08:07Z)).toLocaleTimeString() 上午9:08:077. 关于夏令时参考《百度百科夏令时》夏令时是个奇怪且别扭的东西中国曾经实行过6年1986年到1991年之后便废除了。那么什么是夏令时的呢因为夏季天亮的早、黑的晚而人们还是以冬季的时间点作息导致起的晚浪费了阳光睡的晚浪费了蜡烛所以就人为的在夏季到来时的某天夜里2点偷偷的将时间调快1小时然后在夏季结束时的某天夜里2点偷偷的将时间调慢1小时。上面的一听就很别扭还有人为改时间的调整作息时间不就行了吗事实上我们也仅在1986-1991年执行了6年而已之后便废除了现在我们都是夏季和冬季到来时调整作息时间的。假如我们使用夏令时会有什么影响呢夏季到来时比如1986年5月4日在夜里凌晨2点你的表突然跳到了3点这样你就少睡了一小时。。。冬季到来时比如1986年9月14日在夜里凌晨2点你的表突然跳到1点这样你就多睡了一小时。。。如果你恰好在这个时间段设置了定时任务那么你会发现你的定时任务可能触发了两次也可能没触发。。。虽然我国废除了夏令时但不代表其他国家也废除了比如说美国目前就实行夏令时。但夏令时在全球已经明显不受欢迎了俄罗斯实行了很长时间最终2014年通过杜马法案废除了。西班牙还在偷偷改时间。美国不仅偷偷改时间而且各个州的时区不一样所以重要会议一般都会标注时区。全球有110多个国家在使用夏令时。欧盟正在废除夏令时的路上。另外想查看哪些地区支持夏令时可以在电脑的时区设置中发现原文链接https://blog.csdn.net/u010476739/article/details/118339679
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92631.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!