dayjs时区转换,moment时区转换

-

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

 moment时区转换

// UTC 时间(0 时区)
  console.log('UTC时间:', moment.utc().format('YYYY-MM-DD HH:mm:ss'));
  // 本地时间(当前系统时区,如 GMT+8)
  console.log('本地时间:', moment().format('YYYY-MM-DD HH:mm:ss'));
  // 从 Date 对象转换的本地时间(与第二条相同)
  console.log('Date转本地:', moment(new Date()).format('YYYY-MM-DD HH:mm:ss')); 
  function getTimeZone(date, timezone = '+08:00') {
    return moment(date).utcOffset(timezone)
  }
  const date = new Date();
  console.log('0时区', getTimeZone(date, '+00:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '+01:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '+02:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '+03:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '+04:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '+05:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '+06:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '+07:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '+08:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '+09:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '+10:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '+11:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '+12:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '-11:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '-10:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '-09:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '-08:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '-07:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '-06:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '-05:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '-04:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '-03:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '-02:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '-01:00').format('YYYY-MM-DD HH:mm:ss'));
  console.log('0时区', getTimeZone(date, '-00:00').format('YYYY-MM-DD HH:mm:ss'));

 dayjs

<script src="https://cdn.bootcdn.net/ajax/libs/dayjs/1.11.13/dayjs.min.js"></script>
  <!-- 引入 UTC 插件 -->
  <script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/utc.js"></script>

  <!-- 引入时区插件(需先引入 UTC 插件) -->
  <script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/timezone.js"></script>

==

// 需要安装插件才有utc方法 npm install dayjs utc timezone
  // 扩展插件
  dayjs.extend(dayjs_plugin_utc);
  dayjs.extend(dayjs_plugin_timezone);
  console.log('本地时区时间', dayjs(date).format('YYYY-MM-DD HH:mm:ss'));
  console.log('utc时间', dayjs(date).utc().format('YYYY-MM-DD HH:mm:ss'));
  console.log('本地时区转换为动1区', dayjs(date).utcOffset('+01:00').format('YYYY-MM-DD HH:mm:ss'))
  // 3. 从 UTC 转换到东八区
  const utcTime = dayjs.utc();
  console.log('utc时间', utcTime.format('YYYY-MM-DD HH:mm:ss'))
  const localTime = utcTime.utcOffset('+08:00');
  console.log('转换后时间:', localTime.format('YYYY-MM-DD HH:mm:ss'));

 

 

 

 

 

 

 

 

-

posted @ 2025-02-25 22:39  古墩古墩  Views(879)  Comments(0)    收藏  举报