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

Angular/JS/TS将日期格式化为yyyy-MM-dd'T'HH:mm:ss.SSSZ的方法

toLocaleDateString 本身无法实现这个需求,不需要在这个方法的参数上尝试了。这个API的定位是输出适配指定地区的本地化**纯日期(仅年月日)**字符串,没有提供时分秒、毫秒、时区标识的输出配置,且不同JS运行环境的本地化实现存在差异,即使硬凑options参数,也没法稳定输出符合yyyy-MM-dd'T'HH:mm:ss.SSSZ规范的结果。

下面给不同场景下的简便实现方案:

原生JS/TS通用方案(零依赖)

场景1:需要UTC时区标准格式(结尾固定为Z)

直接调用Date实例内置的toISOString()方法即可,输出完全匹配格式要求,不需要额外传参:

const currentDate = new Date().toISOString();
// 输出示例:2024-05-20T09:22:31.426Z

场景2:需要本地时区格式(结尾为+0800/-0500这类时区偏移值)

写一个轻量格式化函数即可,全环境兼容:

const formatISOLocal = (date: Date): string => {
  const pad = (val: number, len = 2) => String(val).padStart(len, '0');
  const [
    year, month, day,
    hour, minute, second, ms
  ] = [
    date.getFullYear(),
    date.getMonth() + 1,
    date.getDate(),
    date.getHours(),
    date.getMinutes(),
    date.getSeconds(),
    date.getMilliseconds()
  ];
  // 处理时区偏移
  const offset = date.getTimezoneOffset();
  const offsetSign = offset > 0 ? '-' : '+';
  const offsetHour = pad(Math.abs(Math.floor(offset / 60)));
  const offsetMin = pad(Math.abs(offset % 60));

  return `${year}-${pad(month)}-${pad(day)}T${pad(hour)}:${pad(minute)}:${pad(second)}.${pad(ms, 3)}${offsetSign}${offsetHour}${offsetMin}`;
};

// 调用示例
const currentDate = formatISOLocal(new Date());
// 东八区输出示例:2024-05-20T17:22:31.426+0800
Angular环境专属方案

直接用框架内置的DatePipe即可,不需要自己写格式化逻辑:

import { DatePipe } from '@angular/common';

// 非构造函数内使用可直接实例化,依赖注入场景直接注入DatePipe实例即可
const datePipe = new DatePipe('zh-CN');
const currentDate = datePipe.transform(new Date(), "yyyy-MM-dd'T'HH:mm:ss.SSSZ");
// 输出示例:2024-05-20T17:22:31.426+0800

内容的提问来源于stack exchange,提问作者Learn AspNet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 04:06:31