首页 > 解决方案 > InvalidPipeArgument:'无法将管道'DatePipe'的“2018-01-01-12:12:12:123456”转换为日期'

问题描述

 <td>{{suite.testSuiteAttributes && 
       suite.testSuiteAttributes.modifiedTimestamp | date: 'yyyy-MM-dd'
     }}
</td>

我想要“05-Feb-2018 11:00:00 PM CST”CST 格式的日期格式。但收到错误:

无法将“2018-01-01-12:12:12:123456”转换为管道“DatePipe”的日期

我认为这是由于 timeStamp 不是日期格式..而是从后端仅获取此日期。请建议。

标签: javascriptangulartypescriptecmascript-6date-pipe

解决方案


您的日期 "2018-01-01-12:12:12:123456" 不是有效的ISO 8601 日期,因此无法通过内置解析器解析。使用有效的日期格式或编写自定义解析器。

您可以使用正则表达式或简单地使用字符串函数,如其他答案所示的子字符串。

Javascript 中的日期将位于浏览器的本地时区,即用户的系统时间,没有本地方法可以在不同的时区创建日期。您可以使用 UTC 创建日期toLocaleString()并将其转换为特定时区。取决于从后端发送的日期是 UTC 还是 CT。如果是 CT,那么这仅适用于 CT 时区的用户。

let result = "2018-01-01-12:12:12:123456".match(/(\d{4})-(\d{2})-(\d{2})-(\d{2}):(\d{2}):(\d{2}):(\d{3})/).map(x => parseInt(x, 10));

result.shift();

console.log(new Date(...result).toLocaleString())


推荐阅读