Angular Date Pipe日期管道显示时间错误如何获取准确值
问题根源
你遇到的4小时1分钟偏差是两个配置错误共同导致的:
- 格式符写错:Date管道格式规则里,大写
MM代表两位数字的月份,不是分钟。你拿到的原始时间是1月,对应月份值为01,所以分钟位固定显示01,这就是1分钟偏差的来源。代表分钟的正确格式符是小写mm。 - 时区默认转换:你接收到的原始时间后缀带
Z,标识这是UTC标准时间,Angular Date管道默认会按照当前运行环境的本地时区做时间转换,你的本地时区和UTC时差为4小时,因此小时位出现了4小时偏移。
修复方法
调整模板里的Date管道配置,修正格式符同时指定使用UTC时区做格式化即可,修改后的代码如下:
<td style="text-align: center;"> {{ item.StartAt | date:"HH:mm":"UTC"}}</td>
改完后就会正确显示原始UTC时间对应的10:00,不会出现偏差。
如果你的业务场景需要按照指定时区(比如东八区)显示时间,把第三个参数的时区值换成对应时区标识即可,比如东八区传"+0800"。
内容的提问来源于stack exchange,提问作者M Waqar Anwar
相关产品推荐
相关产品推荐

