js怎么将服务器GMT时间转为中国标准时间

最近遇到一个需求:

   antd的时间组件有个默认的时间,我们是前端自己根据电脑的系统时间 new Date()来定的,new Date()的时间就是系统的时间。但是当测试人员搞事情,把系统时间改了时区,电脑日期改变,那antd组件的默认时间也会跟着变,所以这个时候就不对了,测试说应该都根据中国标准时间来默认显示的

  所以前端再想直接new Date()就不对了,我找了半天,找到下面这个解决方法:

既然不能根据系统时间来设置,那根据服务器的时间是可以的吧,我先获取服务器的时间

//这里拿获取百度的地址的时间打比方
const convertToCST= async()=>{
const dateVal = await axios.head('https://www.baidu.com?_='+new Date().getTime()).then(res=>{
//res就是获取到的格林威治时间:GMT格式的
// 示例:假设服务器时间是2023-04-01 12:00:00 GMT
let serverTime = new Date(res.header.date);//这里把获取到的GMT时间转换成Date对象;
if(res.status===200){
//设置date对象,并直接设置GMT时间
let date = new Date(serverTime.getTime()+serverTime.getTimezoneOffset()*6000);
date.setTime(date.getTime()+8*60*60*1000);//这里是将new Date()的时区改为Asia时区
//返回date,是 转换后的 中国标准时间
return date
}
})
}

最后调用这个公共函数convertToCST就可以了

convertToCST().then(res=>{
//Thu Mar 14 2024 17:59:20 GMT+0800 (中国标准时间)
console.log(res)//这个res就是获取到的当前服务器的中国标准时间了,可以对这个格式进行具体格式转化,得到自己想要的格式
})
posted @   码磊姐姐  阅读(475)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示