首页 > 编程语言 >JavaScript Date UTC & GMT All In One

JavaScript Date UTC & GMT All In One

时间:2023-09-06 13:56:27浏览次数:43  
标签:UTC const JavaScript date Date new GMT

JavaScript Date UTC & GMT All In One

js 时期时区转换

image

UTC & GMT

Coordinated Universal Time / 协调世界时

UTC 是最主要的世界时间标准,其以原子时的秒长为基础,在时刻上尽量接近于格林威治标准时间。

UTC 实际上与 GMT 基本相同.

https://zh.wikipedia.org/zh-hans/协调世界时

Greenwich Mean Time / 格林威治标准时间 (英国)

https://zh.wikipedia.org/zh-hans/格林尼治標準時間

使用场景

GitHub Actions 定时任务时间戳不准确 bug

  const date = new Date();
  const month = `${date.getMonth()+ 1}`.padStart(2, `0`)
  const day = `${date.getDate()}`.padStart(2, `0`)
  const hour = `${date.getHours()}`.padStart(2, `0`)
  const minute = `${date.getMinutes()}`.padStart(2, `0`)
  this.date = date.toString();
  // this.date = date.toUTCString();
  // this.date = date.toGMTString();
  // this.date = date.toISOString();

solution

timezone +8 / -8

tips: 左加右减 / 西减东加

new Date()
// Wed Sep 06 2023 03:14:43 GMT+0800 (China Standard Time)

new Date(`${new Date().toUTCString()}+0800`);
// Tue Sep 05 2023 19:14:47 GMT+0800 (China Standard Time)

new Date(`${new Date().toUTCString()}-0800`);
// Wed Sep 06 2023 11:15:16 GMT+0800 (China Standard Time)

image

const changeUTCTimeToChinaTime = () => {
  const timestamp = Date.now();
  // GMT+0800 (China Standard Time)
  // 28800000 毫秒 = 60 分/时 * 8 时 * 60 秒/分 * 1000 毫秒/秒
  return new Date(timestamp - 60 * 8 * 60 * 1000)
}
// UTC to China - 8
const convertUTCTimeToChinaTime = () => {
  const date = new Date()
  const cmtTime = date.toGMTString()
  // GMT+0800 (China Standard Time)
  // 480 分 = 60 分/时 * 8 时
  // return new Date(utcTime - 480);
  const str = new Date(`${cmtTime}-0800`).toGMTString();
  const time = str.split(` `)[4];
  // return new Date(`${cmtTime}-0800`);
  // return new Date(`${date.toGMTString()}-0800`).toGMTString();
}

const china = convertUTCTimeToChinaTime();

demos

function changeTimezone(us) {
  // suppose the date is 00:00 UTC
  const china = new Date(us.toLocaleString('zh-CN', {timeZone: "Asia/Shanghai"}));
  // const china = new Date(us.toLocaleString('en-US', { timeZone: 'America/New_York'}));
  // it will be 08:00 in China and the diff is 8 hours
  const diff = us.getTime() - china.getTime();
  return new Date(us.getTime() - diff);
}


function getChinaTime() {
  const us = new Date();
  const china = changeTimezone(us);
  console.log(`us: ${us.toString()}`);
  console.log(`china: ${china.toString()}`);
}

// getChinaTime()

(

标签:UTC,const,JavaScript,date,Date,new,GMT
From: https://www.cnblogs.com/xgqfrms/p/17682121.html

相关文章

  • 无涯教程-JavaScript - MONTH函数
    描述MONTH函数返回由序列号表示的日期的月份。月份以整数形式给出,范围从1(一月)到12(十二月)。语法MONTH(serial_number)争论Argument描述Required/OptionalSerial_number您要查找的月份的日期。应该使用DATE函数或其他公式或函数的输出输入日期。如果将日期作为......
  • Android官方资料--A/B System Updates
    A/BSystemUpdatesINTHISDOCUMENTOverviewBootloaderstateexamplesUpdateEnginefeaturesLifeofanA/BupdatePost-installstepImplementationKernelpatchesKernelcommandlineargumentsRecoveryBuildvariablesPartitionsFstabKernelslotargumentsOTApacka......
  • 无涯教程-JavaScript - ISOWEEKNUM函数
    描述ISOWEEKNUM函数返回给定日期的年份的ISO周编号。语法ISOWEEKNUM(date)争论Argument描述Required/OptionalDateDateisthedate-timecodeusedbyExcelfordateandtimecalculation.RequiredNotesMicrosoftExcel将日期存储为连续数字,因此可以在计算......
  • android源码分析1--updater(l上)
    一install.cpp中调用updater:constchar*binary="/tmp/update_binary";constchar**args=(constchar**)malloc(sizeof(char*)*5);args[0]=binary;args[1]=EXPAND(RECOVERY_API_VERSION);//definedinAndroid.mkchar*temp=......
  • aosp源码分析 5.0 BlockImageUpdateFn
    block_image_update("/dev/block/bootdevice/by-name/system",package_extract_file("system.transfer.list"),"system.new.dat","system.patch.dat");//args://-blockdevice(orfile)tomodifyin-place......
  • ota升级包中update-script脚本的生成
    控制升级流程的主要逻辑,实际控制着升级过程中大部分重要操作的实施细节,而处于升级包中同目录下的update-bianry负责真正执行update-script记录的操作。 在负责生成升级包的脚本ota_from_target_files.py中,不论我们调用这个脚本来产生全量包,增量包,或者是安卓新加入的block方式的......
  • Pandas中的to_datetime函数用法
    Pandas中的to_datetime函数用法importdatetimeimportpandasaspdimportnumpyasnp将字符串转换为日期时间:pd.to_datetime('2023-09-06')Timestamp('2023-09-0600:00:00')将多个字符串转换为日期时间:pd.to_datetime(['2023-09-06','2023-09-07'......
  • [Javascript] Write Observable
    functionObservable(forEach){this._forEach=forEach;}Observable.prototype={forEach:function(onNext,onError,onCompleted){if(typeofonNext==="function"){returnthis._forEach({onNext,onError:onEr......
  • 无涯教程-JavaScript - DAYS360函数
    描述DAYS360函数返回基于360天的年份(十二个月为30天)的两个日期之间的天数,该天数用于会计计算。语法DAYS360(start_date,end_date,[method])争论Argument描述Required/OptionalStart_dateThetwodatesbetweenwhichyouwanttoknowthenumberofdays.Requir......
  • 无涯教程-JavaScript - DAY函数
    描述DAY函数返回日期的日期,由序列号表示。日期以1到31之间的整数形式给出。语法DAY(serialnumber)争论Argument描述Required/Optionalserialnumber您要查找的日期。应该使用DATE函数或其他公式或函数的输出输入日期。如,在2008年5月的第23天使用DATE(2008,5,23......