dayjs时区转换

-

复制代码
import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';

// dayjs提供两个插件,然后就可以调用tz方法,将本地时间转换成指定时区的时间了
    dayjs.extend(utc);
    dayjs.extend(timezone);
    // 获取当前本地时间
    const localTime = dayjs();
    // getTimezoneOffset() 方法返回协调世界时(UTC)相对于当前时区的时间差值,单位为分钟。
    // 注意:本地时间+这个差值=世界时间
    // 比如北京市东8区,此方法返回-480分钟,可以根据这个值算出时区
    console.log('相对于当前时区的时间差值', new Date().getTimezoneOffset()); // -480
    // 创建一个时区映射表:UTC+X <-> IANA 时区名称
    const timezoneMap = {
      0: 'UTC',
      1: 'Europe/Paris',        // UTC+1
      2: 'Europe/Berlin',       // UTC+2
      3: 'Europe/Moscow',       // UTC+3
      4: 'Asia/Dubai',          // UTC+4
      5: 'Asia/Karachi',        // UTC+5
      5.5: 'Asia/Kolkata',      // UTC+5:30
      6: 'Asia/Almaty',         // UTC+6
      7: 'Asia/Bangkok',        // UTC+7
      8: 'Asia/Shanghai',       // UTC+8
      9: 'Asia/Tokyo',          // UTC+9
      10: 'Australia/Sydney',   // UTC+10
      11: 'Pacific/Guam',       // UTC+11
      12: 'Pacific/Auckland',   // UTC+12
      '-1': 'Atlantic/Azores',           // UTC-1
      '-2': 'Atlantic/South_Georgia', // UTC-2
      '-3': 'America/Argentina/Buenos_Aires', // UTC-3
      '-4': 'America/Caracas',  // UTC-4
      '-5': 'America/New_York', // UTC-5
      '-6': 'America/Chicago',  // UTC-6
      '-7': 'America/Denver',   // UTC-7
      '-8': 'America/Los_Angeles', // UTC-8
      '-9': 'America/Anchorage', // UTC-9
      '-10': 'Pacific/Honolulu', // UTC-10
      '-11': 'Pacific/Midway',  // UTC-11
      '-12': 'Pacific/Kwajalein' // UTC-12
    };
    /**
     * 转换时区
     * @param date 本地时间
     * @param zone 目标时区
     */
    function changeTimezone(date, timezone=8){
      return dayjs(date).tz(timezoneMap[timezone]);
    }
    console.log('当前时间', dayjs(Date.now()).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 22:30:20
    console.log('0时区', changeTimezone(Date.now(), 0).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 14:26:15
    console.log('1时区', changeTimezone(Date.now(), 1).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 15:26:15
    console.log('2时区', changeTimezone(Date.now(), 2).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 15:30:20
    console.log('3时区', changeTimezone(Date.now(), 3).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 17:30:20
    console.log('4时区', changeTimezone(Date.now(), 4).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 18:30:20
    console.log('5时区', changeTimezone(Date.now(), 5).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 19:30:20
    console.log('6时区', changeTimezone(Date.now(), 6).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 19:30:20
    console.log('7时区', changeTimezone(Date.now(), 7).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 21:30:20
    console.log('8时区', changeTimezone(Date.now(), 8).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 22:30:20
    console.log('9时区', changeTimezone(Date.now(), 9).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 23:30:20
    console.log('10时区', changeTimezone(Date.now(), 10).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 01:30:20
    console.log('11时区', changeTimezone(Date.now(), 11).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 00:30:20
    console.log('12时区', changeTimezone(Date.now(), 12).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 03:30:20
    console.log('-12时区', changeTimezone(Date.now(), -12).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 02:30:20
    console.log('-11时区', changeTimezone(Date.now(), -11).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 03:30:20
    console.log('-10时区', changeTimezone(Date.now(), -10).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 04:30:20
    console.log('-9时区', changeTimezone(Date.now(), -9).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 05:30:20
    console.log('-8时区', changeTimezone(Date.now(), -8).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 06:30:20
    console.log('-7时区', changeTimezone(Date.now(), -7).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 07:30:20
    console.log('-6时区', changeTimezone(Date.now(), -6).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 08:30:20
    console.log('-5时区', changeTimezone(Date.now(), -5).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 09:30:20
    console.log('-4时区', changeTimezone(Date.now(), -4).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 10:30:20
    console.log('-3时区', changeTimezone(Date.now(), -3).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 11:30:20
    console.log('-2时区', changeTimezone(Date.now(), -2).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 12:30:20
    console.log('-1时区', changeTimezone(Date.now(), -1).format('YYYY-MM-DD HH:mm:ss')); // xxxx-xx-xx 13:30:20
复制代码

 

 

 

 

 

-

posted @   古墩古墩  Views(26)  Comments(0Edit  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2020-02-25 element-ui表单模板
2020-02-25 图片-滑动-解锁-组件-vue-canvas
点击右上角即可分享
微信分享提示