You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定字符串转换为Typescript中的Luxon DateTime对象?

正确转换ISO格式字符串为Luxon DateTime对象的方法

你的代码解析失败的核心原因是:DateTime.fromFormat要求输入字符串和指定格式完全匹配,但你传入的是带时间、毫秒和时区偏移的完整ISO 8601字符串,和yyyy-MM-dd格式不匹配,导致解析报错。

以下是两种正确的解决方案:

方案1:使用专门的ISO解析方法(推荐)

对于标准ISO 8601格式的字符串,直接用DateTime.fromISO即可,无需手动指定格式,Luxon会自动识别解析:

import { DateTime } from 'luxon';    
const x = '2023-10-27T01:00:57.830+00:00'
const y = DateTime.fromISO(x);
console.log('y = ', y.toString()); // 输出示例:"2023-10-27T01:00:57.830Z"

方案2:按需处理(仅保留日期部分或严格匹配格式)

情况A:只需要提取日期部分(忽略时间和时区)

如果你的目标是获取该字符串对应的日期(时间部分归零),可以先完整解析再重置时间:

// 保留原时区的日期起始时刻
const y = DateTime.fromISO(x).startOf('day');
// 或者转换为UTC时区的日期起始时刻
const yUtc = DateTime.fromISO(x).toUTC().startOf('day');

情况B:坚持使用fromFormat(需严格匹配格式)

如果你一定要用fromFormat,必须指定和输入字符串完全一致的格式模板:

const y = DateTime.fromFormat(x, "yyyy-MM-dd'T'HH:mm:ss.SSSZZ");
// 格式说明:
// yyyy-MM-dd:日期部分
// 'T':字面量分隔符T
// HH:mm:ss.SSS:时:分:秒.毫秒
// ZZ:时区偏移(如+00:00)

内容的提问来源于stack exchange,提问作者Saqib Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 08:46:16