我从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)”转换为日期”
答案 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