如何使用Luxon将ISO 8601格式日期转换为YYYY-MM-DD格式
使用Luxon转换ISO 8601日期为YYYY-MM-DD格式的方法
首先确认你已经安装了Luxon库,未安装可执行以下命令:
- npm 安装:
npm install luxon - yarn 安装:
yarn add luxon
核心实现代码
首先导入Luxon的DateTime模块:
// ES Module 导入方式 import { DateTime } from 'luxon'; // CommonJS 导入方式 // const { DateTime } = require('luxon');
场景1:保留UTC时区对应的日期(和示例输出一致)
你的原始日期带Z后缀属于UTC时间,如果你需要保留UTC时区对应的年月日,直接指定解析时区为utc即可,避免本地时区差异导致日期偏移:
const originalISODate = '2021-09-05T01:39:33Z'; const dateObj = DateTime.fromISO(originalISODate, { zone: 'utc' }); const result = dateObj.toFormat('yyyy-MM-dd'); console.log(result); // 输出:2021-09-05
场景2:转换为本地时区对应的日期
如果你需要把UTC时间转换为你当前运行环境的本地时区后再取日期,不需要指定zone参数:
const originalISODate = '2021-09-05T01:39:33Z'; const dateObj = DateTime.fromISO(originalISODate); const result = dateObj.toFormat('yyyy-MM-dd'); // 东八区环境输出 2021-09-05,UTC负时区环境可能输出 2021-09-04
注意事项
格式化时年份请使用小写yyyy,大写YYYY代表ISO周年,和自然年计算逻辑不同,非特殊场景不要使用,避免出现日期错误。
内容的提问来源于stack exchange,提问作者smooth97
相关产品推荐
相关产品推荐

