问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

前端JS如何将UTC世界时间格式转换为本地时间格式

发布网友 发布时间:2024-09-27 03:43

我来回答

1个回答

热心网友 时间:2024-12-12 08:08

背景

在前后端数据接口通信中,后台返回的时间往往是UTC格式的,即2020-10-12T10:31:35.891724+00:00这种,这可能是因为在数据库中存储时间格式选择的是TIMESTAMP。

作为前端,我们需要将其转换为标准的本地格式,并用“YYYY-MM-DDHH:mm:ss”这种格式呈现给用户,用户才能看得懂。

那么通常情况下,怎么将他们进行转换呢?

探究

先来理解下UTC时间和本地时间

以北京为例,我在写这篇博客的时候,时间是:

vard=newDate()d.toLocaleTimeString()//"上午10:46:42"

而此时的UTC时间为:

d.toUTCString()//"Tue,13Oct202002:46:42GMT"

也就是说,我所在的北京(东八区)时间为上午的10点,而此时的UTC时间(世界时间)为凌晨2点,所以东八区相比于utc时间,提前了8个小时。

可能有的小伙伴迷糊了,为什么是提前了8个小时?

这就牵扯到了全球时区的划分,众所周知:

??全球共24个时区,每个相邻时区的跨度为一小时。

??时区的划分,以零时区为基准,向东则加,向西则减,简称东加西减。

时区

由于地球的自转,造成了我们看到的太阳是东升西落的,对于一个很大的地域而言,东边总是比西边先看到太阳。

比如对于中国而言,下午6点,北京就已经是傍晚了,而新疆地区的傍晚,可能在下午7点以后。如果以北京为例,太阳到达近地点的时间是中午12点,而新疆呢,太阳到达近地点可能在13点(数据不很精确)。

而在世界范围呢,每个地区,都把太阳到达近地点的时间看作是一天中的中午12点,这就导致全球从东向西,全球24个时区会依次度过自己时区的12点

为了让各地时间统一起来,方便交流,就把全球划分为24个时区(因为地球自转一周是24个小时),从零时区开始,东加西减,用一个时间格式来表示,这就是UTC(世界时间)

那么,对于一个后台返回的标准时间(以2020-10-12T10:31:35.891724+00:00为例)来说,最后面的+00:00则告诉了你当前时间是以哪个时区来计算的(+00:00代表了零时区)。

比如,将2020-10-12T10:31:35.891724+00:00转换成东八区时间也即北京时间:

newDate('2020-10-12T10:31:35.891724+00:00')//MonOct12202018:31:35GMT+0800(中国标准时间)

可以看到后面有+0800,意味着这是东八区的本地时间,即世界时间向东跨越了八个时区(加了8个小时)就是你看到的北京本地时间。

转换

上面讲的其实没什么用,只是帮助大家理解一些基础的概念。

想要将复杂的UTC转成需要的格式,最好当然是寻找插件来帮忙了。

1、moment

不会吧?不会吧?大名鼎鼎的moment不会真的有人不知道吧?

importmomentform'moment'vartime='2020-10-12T10:31:35.891724+00:00'moment(newDate(time)).format('YYYY-MM-DDHH:mm:ss')//"2020-10-1218:31:35"

moment还有个专门的时区处理类库,点我直达

用了这个类库,也能正确处理时区之间的转换哦

首先安装这个库npminstallmoment-timezone,然后就可以愉快的写代码了

varmoment=require('moment-timezone');vartz='Asia/Choibalsan'//时区vartime='2020-10-12T10:31:35.891724+00:00'moment.utc(time).tz(tz).format()//"2020-10-12T18:31:35+08:00"moment.utc(time).tz(tz).format('YYYY-MM-DDHH:mm:ss')//"2020-10-1218:31:35"

当然这里还需要注意一下,如果你传递的参数是hh:mm:ss而不是HH:mm:ss,那么moment在处理上是有区别的,hh将会采用12小时制,HH则会采用24小时制。

moment.utc(time).tz(tz).format('YYYY-MM-DDhh:mm:ss')//"2020-10-1206:31:35"2、date-fns

看这名称就能猜到,这又是一个处理时间的插件。而且,相比moment一点不虚呢,他是一个类似lodash的工具集,而且是专门针对各种日期的工具集。

而且相比于moment,这个插件相当的轻量。

import{format}from'date-fns'vartime='2020-10-12T10:31:35.891724+00:00'format(newDate(time),'YYYY-MM-DDHH:mm:ss')//"2020-10-1218:31:35"

其他更详细的API大家自己看文档吧,我就不过多的赘述了。

欢迎小伙伴们留言讨论。

作者:晴天同学

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
邯郸自驾游到青岛马壕运河遗址推荐线路 株洲自驾到青岛马壕运河遗址途径地方 梧州回青岛马壕运河遗址要几个小时 石嘴山到青岛马壕运河遗址要多少油钱 可不可以用开水敷脸 开水能不能敷脸 发动机和发电机区别?? 电音之王朴智妍MV的图片? 电音之王mv里跳舞的是谁 自己怎样开网站 怎样把一个网页设置为主页 10点31分加24小时是多少 我姓饶,老公姓徐,麻烦哪位大师帮我儿子取名,生于2003。6。24。取三个... 取名叫徐饶好吗?我的孩子叫徐饶,可他总是经历坎坷的事情,今年才十九岁... 联想手机A2800d开关接足不量 联想手机a2800d怎么开拒绝陌生号码 联想手机a2800d出现dc.sys 联想手机a2800d长按不能复制空间说说啊 5个方面让男人对你死心塌地-对男人做撒娇卖萌的事 lenovo手机a2800d有微信功能妈 去美国读研留学中介费多少 cad2010注册机64位 中介去美国留学签证 初学者如何看股票大盘 股票初学怎样看图 美国留学中介费要多少,一般都包含哪些服务? 完美世界112里对应小说第几章 到美国留学中介费一般多少 美国自费留学中介费用 专业美国留学中介机构费用 美国留学中介收费情况是怎样的? 副词在句子中有什么样的功能? 王洪祥跟柳海龙差几个级别,柳海龙跟播求差几个级别,播求跟曼尼 帕奎奥... 雪铁龙C4L防冻液磨损快是什么情况? 车是雪铁龙C4L 1.8的,现在快7万公里了,想问问做保养需要做哪些项目!那 ... 有一部小说的男主角叫天一,请问是这部小说叫什么名字 头条里的视频为什么内容不一样呢 同时"今日头条"米3和小米4为啥内容不一样 excelexcel内复制后粘贴,如何保留原有的格式 企业管理费用里的办公费可否做税前列支,有没有规定相关纳税比例? 从管理费用列支是什么意思 "从管理费用列支是什么意思 企业管理费列支的项目有哪些 初中物理100个基础知识点汇总,初二、初三别错过!​ 初中物理中考的重点是什么啊 谢谢了 初中物理知识点积累呢 【中考复习】初中物理总复习知识点-七八九年级知识点大全 泰安哪里卖正宗的德州扒鸡啊 求助 任务清幽谷密道 赵文瑜作品 搜索红包在哪里找到? 搜索红包在哪儿?