简体   繁体   English

使用Moment JS将日期时间转换为ISO格式

[英]Convert datetime to ISO Format using moment js

I want to convert date time to iso to display it to ion-datetime in ionic 我想将日期时间转换为iso以在ionic中将其显示为ion-datetime

Here's my .html code 这是我的.html代码

<ion-item>
  <ion-label stacked>Date</ion-label>
  <ion-datetime [min]="minFrom" [max]="maxFrom" displayFormat="hh:mm a"></ion-datetime>
</ion-item>

Here's my .ts code 这是我的.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);

The output gives me 输出给我

=====================
2017-10-20 08:00
2017-10-21 16:30
=====================
2017-10-20T00:00:00.000Z
2017-10-20T08:30:00.000Z

Why is that the ISO Format gives different value 为什么ISO格式给出不同的值

expected output 预期产量

=====================
2017-10-20 08:00
2017-10-21 16:30
=====================
2017-10-20T08:00:00.000Z
2017-10-21T16:30:00.000Z

here's a sample fiddle 这是一个样本小提琴

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

This part of your existing code is fine. 现有代码的这一部分很好。

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

Since you already have moment objects, you can now just format them as desired. 由于您已经具有矩对象,因此现在可以根据需要设置其格式。

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

Output: 输出:

2017-10-20T08:00
2017-10-20T15:30

Note that you had subtracted 30 minutes from 16:00, so you get 15:30. 请注意,您已从16:00 减去 30分钟,因此您得到15:30。 If you actually wanted 16:30, then you should add 30 minutes instead. 如果您实际上想要的是16:30,则应该增加 30分钟。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM