使用时刻js将datetime转换为ISO格式

时间:2017-10-20 08:24:22

标签: javascript datetime typescript ionic2 momentjs

我想将日期时间转换为iso以将其显示为离子

中的离子日期时间

这是我的.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

这是一个小提琴样本

https://jsfiddle.net/zpt30706/1/

1 个答案:

答案 0 :(得分:1)

现有代码的这一部分很好。

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');
}

由于您已经拥有了时刻对象,现在可以根据需要对它们进行格式化。

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分钟。