我想将日期时间转换为iso以将其显示为ionic中的ion-datetime
这是我的 .html 代码
<ion-item>
<ion-label stacked>Date</ion-label>
<ion-datetime [min]="minFrom" [max]="maxFrom" displayFormat="hh:mm a"></ion-datetime>
</ion-item>
这是我的 .ts 代码
var start = moment('08:00 AM', 'hh:mm A');
var end = moment('04:00 PM', 'hh:mm A').subtract(30, 'm');
if(end < start) {
end = end.add(1, 'd');
}
var minTime = moment(start, 'YYYY-MM-DD HH:mm').format('YYYY-MM-DD HH:mm');
var maxTime = moment(end, 'YYYY-MM-DD HH:mm').format('YYYY-MM-DD HH:mm');
console.log(minTime);
console.log(maxTime);
console.log("=====================");
this.minFrom = moment(minTime, 'YYYY-MM-DD HH:mm:ss').toISOString();
this.maxFrom = moment(maxTime, 'YYYY-MM-DD HH:mm:ss').toISOString();
console.log(this.minFrom);
console.log(this.maxFrom);
输出给了我
=====================
2017-10-20 08:00
2017-10-21 16:30
=====================
2017-10-20T00:00:00.000Z
2017-10-20T08:30:00.000Z
为什么 ISO 格式给出不同的值
预期输出
=====================
2017-10-20 08:00
2017-10-21 16:30
=====================
2017-10-20T08:00:00.000Z
2017-10-21T16:30:00.000Z
这是一个示例 fiddle
最佳答案
现有代码的这部分很好。
var start = moment('08:00 AM', 'hh:mm A');
var end = moment('04:00 PM', 'hh:mm A').subtract(30, 'm');
if(end < start) {
end = end.add(1, 'd');
}
由于您已经有了 moment 对象,因此您现在可以根据需要设置它们的格式。
this.minFrom = start.format('YYYY-MM-DD[T]HH:mm');
this.maxFrom = end.format('YYYY-MM-DD[T]HH:mm');
console.log(this.minFrom);
console.log(this.maxFrom);
输出:
2017-10-20T08:00
2017-10-20T15:30
请注意,您从 16:00 中减去 30 分钟,因此得到 15:30。如果您确实想要 16:30,那么您应该添加 30 分钟。
关于javascript - 使用 moment js 将日期时间转换为 ISO 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46845106/