解析日期时出错请提供有效的 ISO 8601 日期时间 Ionic
我已将日期作为时间戳保存在服务器数据库中。
然后,我使用以下代码将时间戳转换为日期
completeDate : new Date(timestamp);
It shows date : Wed Feb 28 2018 00:35:06 GMT+0530 (IST)
但是,当我尝试在 ion-datetime 中设置时,它会抛出错误
<ion-datetime displayFormat="MM/DD/YYYY" [(ngModel)]="history.completeDate"></ion-datetime>
解析日期时出错:“2018 年 2 月 28 日星期三 00:35:06 GMT+0530 (IST)”。请提供有效的 ISO 8601 日期时间格式: https://www.w3.org/TR/NOTE-datetime
有人可以帮我解决这个问题吗
就像 @Animator 所说的那样,您需要 ISO 8601 日期时间格式。
因此,您必须将类型定义为字符串并将值设置为:
completeDate : (new Date(timestamp)).toISOString();
有关 Date.prototype.toISOString() 的更多信息
当我查看文档时,我发现了以下内容:
Ionic uses the ISO 8601 datetime format for its value. The value is simply a string, rather than using JavaScript's Date object. Additionally, when using the ISO datetime format, it makes it easier to serialize and pass within JSON objects, and sending databases a standardized format which it can be easily parsed if need be.
还有 ISO 8601 日期时间格式:
YYYY-MM-DDTHH:mmZ
Javascript 日期对象可以转换许多字符串格式,但此特定组件需要 ISO 8601 格式的字符串,因此您需要进行进一步转换。
我尝试根据给定的日期格式手动创建 ISO 字符串 - 在我的情况下为:(dd-MMM-yyyy)
function xx_formatDate(p_date){
//to resolve error - "Please provide valid ISO 8601 string."
if(p_date){
let formattedDate = new Date(p_date);
let dateArr = formattedDate.toLocaleDateString().split('/');
let l_year = dateArr[2];
let l_month = dateArr[0];
let l_date = dateArr[1];
l_month = (l_month.length>1)? l_month : '0'+l_month;
l_date = (l_date.length>1)? l_date : '0'+l_date;
return l_year+'-'+l_month+'-'+l_date;
} else {
return ;
}
}