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
相关产品推荐
相关产品推荐

