2017-04-12 81 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運氣:)