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

Angular中生成类似MomentJS的UTC格式时间(带Z后缀)

实现Angular原生Date对象模拟MomentJS的UTC日起始格式化效果

要实现和moment(this.routeParams.startTime).utc(true).startOf('day').format()一致的输出(YYYY-MM-DDTHH:mm:ssZ格式),可以通过Angular原生Date API完成,无需依赖第三方库,步骤如下:

1. 解析输入时间

先将路由参数中的时间值转换为Date对象:

const inputDate = new Date(this.routeParams.startTime);

2. 获取UTC时区的当日起始时间

构造新的Date对象,使用原日期的UTC年、月、日,将时分秒设为0:

const utcStartOfDay = new Date(
  Date.UTC(
    inputDate.getUTCFullYear(),
    inputDate.getUTCMonth(),
    inputDate.getUTCDate(),
    0, 0, 0 // 固定为UTC时间的00:00:00
  )
);

3. 格式化为目标字符串

利用Date的toISOString()方法生成标准UTC格式字符串,再去掉多余的毫秒部分:

const formattedTime = utcStartOfDay.toISOString().slice(0, 19) + 'Z';
// 输出示例:2023-09-11T00:00:00Z

完整代码示例

getUtcStartOfDay(): string {
  const inputDate = new Date(this.routeParams.startTime);
  const utcStartOfDay = new Date(
    Date.UTC(
      inputDate.getUTCFullYear(),
      inputDate.getUTCMonth(),
      inputDate.getUTCDate(),
      0, 0, 0
    )
  );
  return utcStartOfDay.toISOString().slice(0, 19) + 'Z';
}

关键说明

  • Date.UTC()生成UTC时间戳,以此创建的Date对象会被视为UTC时区时间;
  • toISOString()默认返回带毫秒的格式(如2023-09-11T00:00:00.000Z),通过slice(0,19)截取前19位去掉毫秒,再手动添加Z后缀;
  • 逻辑完全匹配MomentJS的utc(true).startOf('day').format(),确保输出为UTC当日零点,格式符合需求。

内容的提问来源于stack exchange,提问作者MYTH JENKEN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:46:05