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

Angular DatePipe转换日期时间时分钟异常显示为05问题求助

问题原因及解决方案

哦,这个坑我之前踩过!问题出在你用的日期格式字符串上——你把分钟的占位符写错啦!

Angular的DatePipe遵循Unicode CLDR的日期格式规则,其中大小写是严格区分的:

  • MM 代表的是两位数的月份(比如你的输入是5月,所以会显示05)
  • mm 才是两位数的分钟(比如00、15、45这类)

你现在用的格式是"dd-MM-yyyy HH:MM",这里的MM会被解析成月份值,所以不管你输入的分钟是多少,都会显示当前日期的月份(也就是5月对应的05),这就是为什么分钟始终是05的原因!

正确的解决方案

只需要把格式字符串里的MM替换成mm就可以了,正确的格式应该是:"dd-MM-yyyy HH:mm"

给你一个完整的示例代码参考:

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

// 实例化DatePipe,使用nl-NL区域设置
const datePipe = new DatePipe('nl-NL');

// 处理HTML5返回的日期时间字符串,替换T为空格
const rawDateTime = '2018-05-23T03:00'.replace('T', ' ');

// 用正确的格式转换日期
const formattedDateTime = datePipe.transform(rawDateTime, 'dd-MM-yyyy HH:mm');

console.log(formattedDateTime); // 输出:23-05-2018 03:00

另外再给你提几个容易搞混的格式符,避免以后再踩坑:

  • yyyy:4位数的年份(推荐用这个,不要用YYYY,后者代表周年,适用场景不同)
  • HH:24小时制的小时数,hh:12小时制的小时数
  • ss:两位数的秒数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:26:53