常规的时间处理直接使用 dayjs 库就可以满足了,大而全一些的就使用 momnet.js 处理吧
dayjs适合移动端或网站对时间处理没那么复杂的,比较轻量
moment.js是一个功能非常齐全的处理时间的类库,在PC站上使用比较合适,毕竟使用wifi比使用流量好多了,哈哈
如果一般项目已经使用了dayjs,突然来个需求要处理utc时间转换,这时又不想再下载momnet.js,有以下两个方式可以处理
一、手写
var bjTimestamp = 1584027168;
var localTimezoneMinutes = 420; // 每个时区间隔1小时,转换为分钟就是60,420也就是东七区,60 * 7 = 420,而480就表示东八区转换为秒为28800
var localTime = dayjs((bjTimestamp + (localTimezoneMinutes - 480) * 60) * 1000).format('YYYY-MM-DD');
二、下载dayjs-plugin-utc扩展插件
npm安装地址:https://www.npmjs.com/package/dayjs-plugin-utc
引入后直接使用utfOffset做时区偏移就行了
import dayjs from 'dayjs'
import dayjsPluginUTC from 'dayjs-plugin-utc'
dayjs.extend(dayjsPluginUTC)
// 计算当地时间
function calcLocalTime (bjTimestamp, localTimezoneMinutes, format) {
if (bjTimestamp && localTimezoneMinutes) {
return dayjs(bjTimestamp * 1000)
.utcOffset(localTimezoneMinutes)
.format(format || "YYYY-MM-DD HH:mm");
}
return "--";
}
calcLocalTime(1584027168, 420);
补充介绍一下,utc时间,世界调整时,就是各个时区的时间不一样,像北京时间是8点,那东京时间就是9点,比我们多了一个时区。之所以要转换时间,是因为手机时间会根据时区自动调整,假如我们坐一个航班8点出发到东京2个小时,我们手机当时看是10点到达,如果你到了东京手机上显示的时间应该是11点到达。