2017-04-12 65 views
2

我使用离子日期时间为我的预约表单。插入时工作正常,没有任何问题。但是,当我需要从后端更新插入的约会日期表单详细信息时,日期值不显示在ion-datetime中。离子2离子日期时间ISO格式问题

下面是我的代码:

update.html:

​​

update.ts:

leadDetailsUpdate={ 
     appt_date:'' 
}; 

的日期格式我从后端获得如下:

appt_date: "2017-01-01" 

下面是错误或消息我收到的控制台:

Error parsing date: "null". Please provide a valid ISO 8601 datetime format: https://www.w3.org/TR/NOTE-datetime

+0

使用** toISOString()**函数将它转换为ISO之前显示它离子日期时间 –

+0

让我知道它是否解决问题 –

回答

6

将其转换为ISO格式显示

var date = new Date('2017-01-01').toISOString() 
 
console.log(date)

+0

我不是在哪里使用这个代码? –

+0

下面是我试过的,它没有来:leadDetailsUpdate = { appt_date:'new Date('appt_date')。toISOString()' }; –

+0

@AkashM只需使用appt_date创建一个新日期并将其重新分配给appt_date –

2

即使拉夫是正确的之前,我发现,如果你的时区不+0,你可能会遇到问题。我在什么地方找到这样的解决方案:

let tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds 
this.startTime = (new Date(this.myStartTime - tzoffset)).toISOString().slice(0,-1); 

然后在我的HTML我有这样的:

<ion-datetime displayFormat="HH:mm" [(ngModel)]="startTime" (ionChange)="changeCheckOutStartTime()" style="padding-left: 21px"></ion-datetime> 

而在changeCheckOutStartTime()方法,我走的时候,创造了一会儿:

changeCheckOutStartTime() { 
    this.myStartTime = moment(this.startTime).toDate(); 
} 
0

在显示之前使用ISO格式,如下所示:

this.myDate = new Date('2017-01-01').toISOString() 

会给我们一个小时的差异,每个浏览器会做一些不同的事情。在我的情况下,我有5小时的差异(16/12/17 02:00将是16/12/17 07:00)。

一种更好的方式是使用时刻作为其documentationn离子recomends(https://ionicframework.com/docs/api/components/datetime/DateTime/#advanced-datetime-validation-and-manipulation

实施例:在根proyect

  1. 打开控制台和安装时刻:npm install moment --S
  2. 组件文件中的导入时刻:import moment from 'moment';
  3. 模型变量的设定值:this.myDate = moment().format()

最好的办法是创建一个管道。那么查看这个演示http://plnkr.co/edit/MHjUdC获得灵感,goog运气:)