-
需求:
起初是为了处理不同地区的项目(如:迪拜项目),可能和我们东八区存在时区问题,导致项目部署到现场展示的是我们东八区的数据时间,如东八区数据入库的时间是 " 2020-12-29 12:38:33 ",但是放到迪拜实际这条数据对应的时间应该是 " 2020-12-29 08:38:33 "。
所以为了避免这种情况,处理时间格式化之前就得首先设置时区。而每次人为配置时区比较麻烦,所以使用了moment自带的guess方法去获取当前所在的时区。但是为了适配后期需要修改时区的问题,所以抽离配置后可以人为去设置当前时区。
-
实现:
-
安装:
npm i moment-timezone
-
public/config.json:
添加时区配置,默认为空字符串,自动去获取当前时区
注意:该配置由src/config.js引用,并最终由main.js引入
"timezone": ""
默认为空,为空的情况下会自动获取当地时区,如目前获取的是本地时区 ‘Asia/Shanghai’
开发阶段可以在public/config.json去设置时区进行测试
-
配置值参考:
中国所处的东八区:Asia/Shanghai(会在标准utc时间上加八小时)
阿布扎比哈里发港迪拜所处的东四区:Asia/Dubai(会在标准utc时间上加四小时)
莫斯科所处的东三区:Europe/Moscow(会在标准utc时间上加三小时)
巴西所处的西三区:America/Sao_Paulo(会在标准utc时间上减三小时)
-
plugins/moment.js:
定义一个函数,由main.js调用,接收一个 timezone 参数,参数不存在或为空字符串时,通过guess方法自动获取当前时区,当参数存在时,使用传入的时区,之后把时区设置为默认值
import moment from 'moment-timezone'; import 'moment/locale/zh-cn'; import Vue from 'vue'; Vue.filter('dateFormat', function filter(dateStr, pattern = 'YYYY-MM-DD HH:mm:ss') { return dateStr ? moment(dateStr).format(pattern) : '- -'; }); function setTimezone(timezone) { const getTimezone = timezone || moment.tz.guess(true); console.log('rd -> getTimezone -> getTimezone', getTimezone); moment.tz.setDefault(getTimezone); } export default { setTimezone };
-
main.js:
import appConfigInstance from './config'; import moment from './plugins/moment'; moment.setTimezone(appConfigInstance.timezone);
-
-
要求:
后端统一提供utc时间
-
格式:
以东八区北京时间和东四区哈里发港为例:
-
后端提供标准的0时区的utc时间(YYYY-MM-DDTHH:mm:ssZ):
const time = '2020-12-29T12:38:33Z' // 东八区格式化后,时间加8小时:2020-12-29 20:38:33 // 东四区格式化后,时间加4小时:2020-12-29 16:38:33
-
后端提供东八区的utc时间,即我们当前所处时区的utc时间(YYYY-MM-DDTHH:mm:ss+08:00):
const time = '2020-12-29T12:38:33+08:00' // 东八区格式化后,时间不变,只做格式化处理:2020-12-29 12:38:33 // 东四区格式化后,时间减4小时:2020-12-29 08:38:33
-
后端提供普通时间,非utc时间(YYYY-MM-DD HH:mm:ss):
const time = '2020-12-29 12:38:33' // 东八区格式化后,时间不变,只做格式化处理:2020-12-29 12:38:33 // 东四区格式化后,时间不变,只做格式化处理:2020-12-29 12:38:33
如有问题,请指出,接受批评。
期待能够对你有所帮助 ~
-
utc时间处理
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...