javascript的倒計時功能中newData().getTime()在iOS下會報錯問題解決


javascript的倒計時功能中newData().getTime()在iOS下會報錯問題解決

在做移動端時間轉化為時間戳時,遇到了一個問題,安卓手機上訪問時,能拿到時間戳,從而正確轉換時間,而在iOS上缺不能正常顯示,顯示的時間為:NaN-NaN1-NaN  Invalid Date

new Date('2016-07-18 14:58:32').getTime();      //在ios上死活拿不到時間戳顯示NaN

在網上找問題出現原因,看到以下內容:

 在IOS5以上版本(不包含IOS5)中的Safari瀏覽器能正確解釋出Javascript中的 new Date('2013-10-21') 的日期對象。
但是在IOS5版本里面的Safari解釋new Date('2013-10-21') 就不正確,在IOS5的Safari中返回的永遠是"Invalid Date"。
后來我在網上查找了資料,原來是低版本的Safari解釋new Date('2013-10-21')這個對象不一樣,在IOS5中的Safari不支持這種寫法,
而它支持的寫法為new Date('2013','10','21'),這樣寫就能解決"Invalid Date"的問題,能返回一個Javascript Date回來了。
但是隨之而來的問題有出現了,Date是返回過來了,可是這個Date對象中方法返回的數據可不是我想要的,返回的數據全都不正確。
 現在返回過來的Date對象.getMonth()總要比正常的要多一個月!還有.getDay()返回的星期幾也不正確!╮(╯▽╰)╭懊惱啊,折磨啊。。。。
 我都開始罵開發Safari的這幫人了,不過罵歸罵問題還是要解決的,要不工資就木有了!呵呵!
  接着我查了很多國外的技術blog,終於找到了解決方案,原來想要IOS5中的Safari能正確解析new Date()那么必須這么寫
 new Date('2013/10/21');

最后根據項目中的數據將代碼修改了下: new Date("2010-03-15 10:30:00".replace(/-/g,'/')).getTime();終於解決了問題!!!(真是嚇死,還以為要任務延期了,還好解決了)

獲得當前時間:

 1 //獲得當前時間
 2 function getLocalTime(now) {
 3     now = new Date(now);
 4     var year=now.getFullYear();
 5     var month=now.getMonth()+1;
 6     var date=now.getDate();
 7     var hour=(now.getHours()<10)?("0"+now.getHours()):now.getHours();
 8     var minute=(now.getMinutes()<10)?("0"+now.getMinutes()):now.getMinutes();
 9     var second=(now.getSeconds()<10)?("0"+now.getSeconds()):now.getSeconds();
10     return year+"/"+month+"/"+date +" "+hour+":"+minute+":"+second;
11 
12 }

 

下面貼上整個倒計時代碼:

 1 //倒計時時間計算函數
 2 function getTime(obj){
 3     var StartTime= new Date(obj.Start.replace(/-/g,'/')); //活動開始時間
 4     var endTime = new Date(obj.End.replace(/-/g,'/'));//活動結束時間
 5     var NowTime = new Date();
 6     var t =StartTime.getTime() - NowTime.getTime(),t_end = endTime.getTime() - NowTime.getTime();
 7     var d=Math.floor(t/1000/60/60/24), h=Math.floor(t/1000/60/60%24),m=Math.floor(t/1000/60%60),s=Math.floor(t/1000%60);
 8     var d_end=Math.floor(t_end/1000/60/60/24), h_end=Math.floor(t_end/1000/60/60%24),m_end=Math.floor(t_end/1000/60%60),s_end=Math.floor(t_end/1000%60);
 9     d = d<=0?0:d;
10     h = h<=0?0:h;
11     m = m<=0?0:m;
12     s = s<=0?0:s;
13     d_end = d_end<=0?0:d_end;
14     h_end = h_end<=0?0:h_end;
15     m_end = m_end<=0?0:m_end;
16     s_end = s_end<=0?0:s_end;
17     var startIs = d==0&&h==0&&m==0&&s==0,endIs =d_end==0&&h_end==0&&m_end==0&&s_end==0 ;
18     if(startIs== true && endIs ==true){
19         setTime="";
20         dateShow = "直播活動已經結束";
21     }else if(startIs== true && endIs ==false){
22         setTime="";
23         dateShow = "直播活動正在進行";
24         timer = setTimeout(setTimer,500);
25     }else if(startIs== false && endIs ==false){
26         setTime="直播開始時間為:"+obj.Start;
27         dateShow="距離直播開始還有:"+d+"天"+h +"時"+m+"分"+s+"秒";
28     }
29     $(obj.eleCode).find(".setTime").html(setTime);
30     $(obj.eleCode).find(".startTime").html(dateShow);
31 }

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM