如何修复Error: InvalidPipeArgument: 'Unable to convert "2019-10-17 09:00:00" into a date' for pipe 'DatePipe'
。此错误来自Safari浏览器。
这是代码
list.component.html
<div class="date-text" nz-col nzSpan="24">
{{ dayWeather.date | date: 'EEEE' }}
</div>
list.component.ts
this.weatherService
.fiveDayForecast(this.lat, this.lon, unit)
.subscribe(data => {
for (let i = 0; i < data.list.length; i = i + 8) {
const forecastWeather = new Forecast(
data.city.name,
data.list[i].weather[0].description,
data.list[i].main.temp.toFixed(2)+scaleTemp,
data.list[i].dt_txt,
data.list[i].weather[0].icon
);
this.forecast.push(forecastWeather);
}
return this.forecast;
});
答案 0 :(得分:1)
在将日期发送到DatePipe之前,先对其进行如下转换。 Safari,不支持这种日期格式:“ 2014-02-18 15:00:48”,您应将空格更改为T。
'2014-02-18 15:00:48'.replace(/\s/, 'T')
<div class="date-text" nz-col nzSpan="24">
{{ validDateFormat(dayWeather.date) | date: 'EEEE' }}
</div>
在component.ts中,创建一个将空间转换为T的方法,如下所示:
validDateFormat(dateString) {
if(dateString) {
return dateString.replace(/\s/, 'T');
}
return null;
}
答案 1 :(得分:0)
您需要将dayWeather.date转换为Date对象:新的Date(dayWeather.date)。
格式示例 这些示例将日期转换为各种格式, 假设dateObj是JavaScript日期对象,用于年份:2015,月份:6,日期:15,小时:21,分钟:43,秒:11,以美国当地时间为准区域设置。
{{ dateObj | date }} // output is 'Jun 15, 2015'
{{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'
{{ dateObj | date:'shortTime' }} // output is '9:43 PM'
{{ dateObj | date:'mm:ss' }} // output is '43:11'
来自MDN on JavaScript Date Object
var date1 = new Date('December 17, 1995 03:24:00');
// Sun Dec 17 1995 03:24:00 GMT...
var date2 = new Date('1995-12-17T03:24:00');
// Sun Dec 17 1995 03:24:00 GMT...