如何使用Day.js将America/New_York时区数据转换为Asia/Calcutta时区
使用Day.js实现America/New_York到Asia/Calcutta时区转换
Day.js默认不支持时区处理,需要借助官方的utc和timezone插件完成转换,具体操作步骤如下:
1. 安装依赖
先安装Day.js核心库:
npm install dayjs
2. 导入并启用插件
在代码中导入所需插件并启用:
const dayjs = require('dayjs'); const utc = require('dayjs/plugin/utc'); const timezone = require('dayjs/plugin/timezone'); dayjs.extend(utc); dayjs.extend(timezone);
3. 执行时区转换
根据你接收数据的类型,分两种场景处理:
场景1:接收的是纽约时区的时间字符串
直接解析为纽约时区的Day.js实例,再转换到加尔各答时区:
// 解析纽约时区时间 const nyTime = dayjs.tz('2024-05-20 14:30:00', 'America/New_York'); // 转换为加尔各答时区 const calcuttaTime = nyTime.tz('Asia/Calcutta'); // 自定义格式输出转换结果 console.log(calcuttaTime.format('YYYY-MM-DD HH:mm:ss'));
场景2:接收的是原生Date对象
先将Date对象识别为纽约时区时间,再执行转换:
// 假设date是接收到的Date对象 const date = new Date(); // 转为纽约时区的Day.js实例 const nyTime = dayjs(date).tz('America/New_York'); // 转换为加尔各答时区 const calcuttaTime = nyTime.tz('Asia/Calcutta'); console.log(calcuttaTime.format('YYYY-MM-DD HH:mm:ss'));
关键注意点
- 必须同时启用
utc和timezone插件,二者缺一不可 - 时区标识符要使用IANA标准名称(如
America/New_York、Asia/Calcutta),避免使用EST、IST这类易歧义的缩写
内容的提问来源于stack exchange,提问作者ArtBindu
相关产品推荐
相关产品推荐

