前端 不同时区转换东八区时间

2,447 阅读1分钟

前言

不同国家的电脑时区获取出来的时间戳是不一样的,后端的查询接口需要东八区的时间戳,所以我这边要把所有时区的时间戳都转换为东八区,下面是我遇到的一个需要通过moment包处理东八区转换时间戳的解决方法。

需求

根据时间选择器时间戳筛选指定日期数据,不同的时区也要转换为东八区时间戳进行筛选。

image-20230627103629037.png

电脑设置不同的时区

image-20230627112657005.png

使用moment-timezone包转换东八区时间

官方中文文档:momentjs.cn/timezone/do…

下载moment-timezone

npm i moment-timezone

引入moment

import moment from 'moment-timezone';

获取指定日期的开始时间戳

这里的startTime值可以改为自己时间选择器的开始时间

const startTime = new Date();
const startTimeData = moment.tz(moment(startTime).format('YYYY-MM-DD'), 'Asia/Shanghai').valueOf();
console.log(startTimeData);//转换后的东八区时间戳

获取指定日期的结束时间戳

const endTime = new Date();
const endTimeData = moment.tz(moment(endTime).endOf('day').format('YYYY-MM-DD H:m:s'), 'Asia/Shanghai').valueOf();
console.log(endTimeData);//转换后的东八区时间戳

moment.tz用法解释

将所在时间转换为指定时区的时间

moment.tz(时间,指定时区)
时间的格式要求是'YYYY-MM-DD H:m:s'或者'YYYY-MM-DD',所以我这边把所需要指定的时间戳转换成时间格式

打印本地时区方法

moment.tz.guess();

.valueOf()是用来获取时间戳的,想要时间格式的可以用format()

结语

通过上面的转换,现在本地无论切换哪个时区,最后都能获取都东八区的时间戳给后端啦~

如果你觉得此文对你有一丁点帮助,麻烦点个赞哈,谢谢大家。