如圖,需求是通過Ionic2 的 ion-datetime ?實現(xiàn)一個時間選擇器. ?
因為展示的初始化時間是從上個頁面帶過來的. 所以需要用到三個參數(shù):
[(ngModel)]="times.start" ? ?即當前展示的時間
[min]="times.min"? 可選擇的最小時間
[max]="times.max" ? ?可選擇的最大時間
我從上個頁面?zhèn)鬟f過來的時間,時間格式是 YYYY-MM-DD HH:mm? 輸出結(jié)果 2017-07-08 05:52:00
但是在ionic2 上設(shè)置的時間格式是要 用ISO 標準? 即:? toISOString()? 返回 Date 對象的字符串格式? ?
?輸出結(jié)果 2017-07-08T05:52:00.486Z
這尼瑪,首先想到的是,后臺返給我的數(shù)據(jù)為啥不是時間戳呢?如果是時間戳,直接 new Date(時間戳).toISOString(); ?不就完事了嘛
然后我現(xiàn)在就需要? 將YYYY-MM-DD HH:mm 格式的數(shù)據(jù) 轉(zhuǎn)換成時間戳[步驟一], 然后再new Date(時間戳).toISOString() ?[步驟二];
步驟一: ? ? ?this.start= new Date(上個頁面?zhèn)鬟^來的固定格式的時間).getTime()+8*3600*1000; ?這樣就拿到時間戳了
步驟二:? ? ? this.times.start = new Date(this.start).toISOString(); ? 轉(zhuǎn)換完成后,這就是ISO格式的時間了.
經(jīng)測試,google 調(diào)試模式下,安卓手機上 都能準確顯示, 未讀蘋果設(shè)備上無法顯示...why? 這么坑?
改了一上午也沒弄清楚頭緒. 最后根據(jù)經(jīng)驗判斷,是因為這兩次數(shù)據(jù)的轉(zhuǎn)換涉及到計算, 從而導致頁面跳轉(zhuǎn)過去的時候,數(shù)據(jù)還沒來得及渲染上去... ?也就是說 這兩次計算 造成的效率問題,影響了渲染展示.
然后,朋友直接就用 ?replace(' ','T')+'Z'; ? 完美解決.
對啊? 怎么就沒想到之別把 2017-07-08 05:52:00? 轉(zhuǎn)換成 2017-07-08T05:52:00.486Z這種數(shù)據(jù)格式呢?
然后經(jīng)過測試,最后完美解決了蘋果端 設(shè)置初始化時間無效的問題.