无法格式化角度时间戳记

时间:2018-12-12 15:47:29

标签: angular

我从firebase中以字符串形式获取日期(不确定是否是问题所在),然后可以使用以下命令简单显示它:
{{ post.data.date }}
并显示:Timestamp(seconds = 1544623520,nanoseconds = 401000000)
问题是当我给它指定日期格式({{ post.data.date | date:'yyyy-MM-dd'}})时,它给出了InvalidPipeArgument错误,但是,如果我添加* 1000 {{ post.data.date * 1000 | date:'yyyy-MM-dd'}}
,该错误消失了,但没有任何显示。 没有该错误的完整错误* 1000:
错误错误:InvalidPipeArgument:'无法将管道'DatePipe'的“ Timestamp(seconds = 1544623520,nanoseconds = 401000000)”转换为日期”

1 个答案:

答案 0 :(得分:0)

Unable to convert "Timestamp(seconds=1544623520, nanoseconds=401000000)" into a date' for pipe 'DatePipe'

这是因为"Timestamp(seconds=1544623520, nanoseconds=401000000)"不是有效的JS日期,也不是Date构造函数可以插入的字符串。在任何JS环境中都可以看到同一件事:

new Date("Timestamp(seconds=1544623520, nanoseconds=401000000)");
// --> Invalid Date

您可以在绑定之前转换值,也可以在DatePipe之前在自己的Pipe中转换值:

const timeStamp = "Timestamp(seconds=1544623520, nanoseconds=401000000)";
let [,res] = timeStampe.match(/seconds=(\d+)/);
return new Date(+res * 1000); // because JS epoch times are milliseconds
// --> Wed Dec 12 2018