时区,互转, 默认使用 浏览器时区
import { getLocalUser } from './config'
import moment from 'moment-timezone'
import { getLanguage } from '@/plugins/languages'
export const _format_zh = 'YYYY-MM-DD HH:mm:ss'
export const _format_en = 'MMM DD,YYYY HH:mm:ss'
export const _format_short_en = 'MMM DD,YYYY'
export const _format_short_zh = 'YYYY-MM-DD'
export const _format_m = 'HH:mm a DD-MM-YYYY '
export const getBrowserTimezone = () => {
return moment.tz.guess()
}
export const getFormat = () => {
const language = getLanguage();
if(language === 'zh-CN') {
return _format_zh;
}
return _format_en
}
export const getShortFormat = () => {
const language = getLanguage();
if(language === 'zh-CN') {
return _format_short_zh
}
return _format_short_en;
}
export const getCurrentTimeZone = () => {
const user = getLocalUser()
return user.timezone || getBrowserTimezone();
}
/**
* 获取 moment UTC实例
*/
export const _moment_utc = date => {
if (date) {
return moment.tz(date, 'UTC')
}
return moment.tz('UTC')
}
/**
* 获取 moment 当前时区实例
*/
export const _moment = date => {
if (date) {
return moment.tz(date, getCurrentTimeZone())
}
return moment.tz(getCurrentTimeZone())
}
/**
* 将 UTC 时间转化为 当前时区的实例
*/
export const _moment_d = utc_date => {
return _moment_utc(utc_date).tz(getCurrentTimeZone())
}
/**
* 根据当前时区格式化时间
* @param {*} time
*/
export const _format = (time, format) => {
return _moment(time).format(format ? format : getFormat())
}
/**
* 根据将UTC格式化成当前时区的时间
* @param {*} time
*/
export const _format_utc = (utc_date, format) => {
return _moment_d(utc_date).format(format ? format : getFormat())
}
/**
* 根据将当前时区的时间 格式化成 UTC
* @param {*} time
*/
export const _format_d = (date, format) => {
return _moment(date).tz('UTC').format(format ? format :getFormat())
}
/**
* 当前时间 | 当前时区
* @param {*} format
* @returns
*/
export const _now = (format) => {
return _moment().format(format ? format : getFormat())
}
/**
* 当前时间 | UTC
* @param {*} format
* @returns
*/
export const _now_utc = (format) => {
return _moment_utc().format(format ? format : getFormat())
}
/**
* 当前时间之差
* @param {*} value
* @returns
*/
export const _now_diff = utc_date => {
// 将当前时区的时间转化为 UTC 时间
const _now_unix = _moment().tz('UTC').unix()
const _diff_nuix = _moment_utc(utc_date).unix()
// console.log(`now: ${_now_unix} | diff: ${_diff_nuix}`);
// console.log(`diff ${_diff_nuix - _now_unix}`);
return _diff_nuix - _now_unix
}
/**
* 当前时间之差 30分钟
* @param {*} value
* @returns
*/
export const _now_diff_30 = value => {
return _now_diff(moment(value).add(30, 'minutes').format('YYYY-MM-DD HH:mm:ss'))
}
export const tz_difference = (timezone) => {
// const utc = moment(moment.tz("America/Resolute").format('YYYY-MM-DD HH:mm:ss'))
const utc = moment(moment.tz(timezone || moment.tz.guess()).format('YYYY-MM-DD HH:mm:ss'))
const cur = moment(moment.tz('UTC').format('YYYY-MM-DD HH:mm:ss'))
let _difference = utc.diff(cur, 'hours')
console.log(_difference)
// if (_difference > 0) {
// _difference = `+0${_difference}`
// } else {
// _difference = _difference.toString()
// _difference = _difference.replace('-', '-0')
// }
if(_difference >= 0) {
if(_difference < 10) {
_difference = `0${_difference}`
}
_difference = '+' + _difference;
}
return `UTC${_difference}:00`
}
本文由 邓尘锋 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Nov 29, 2022 at 01:37 pm