js倒计时功能中newData().getTime()在iOS下会报错,显示 nan

最近在做移动端项目 ,有个设置开始时间和结束时间,然后倒计时 这个活动还有几天。在安卓上能正确转换时间,但在iOS上不能显示,为NaN-NaN1-NaN  Invalid Date,

  就好比new Date('2017-09-18 14:58:32').getTime();      /  /在ios上死活拿不到时间戳显示NaN

 我也查阅了相关的资料,后来发现:

            原来是低版本的Safari解释new Date('2013-10-21')这个对象不一样,在IOS5中的Safari不支持这种写法,

             而它支持的写法为new Date('2013','10','21'),这样写就能解决"Invalid Date"的问题

  所以想要正确显示时间在iOS上,应该这么写

  new Date("2010-03-15 10:30:00".replace(/-/g,'/')).getTime();   解决了问题!! 

 

 

   然后附上 时间相差的倒计时代码

//倒计时
setInterval( function()
{
//设置开始时间
var startTime = ($dp.$( 'time1' ).value.replace( /-/g, '/' ));
// 当前时间
var nowTime = new Date().getTime();
if( new Date( startTime ).getTime() - nowTime > 0 )
{
$( "#timeText" ).removeClass( "none" ).html( "未开始" );
$( ".downTime ul" ).addClass( "none" );
}
else
{
$( ".downTime ul" ).removeClass( "none" );
$( "#timeText" ).addClass( "none" );
var endTime = new Date( $dp.$( 'time2' ).value.replace( /-/g, '/' ) );
// 相差的时间
var t = endTime.getTime() - nowTime;
if( t <= 0 )
{
$( ".downTime ul" ).addClass( "none" );
$( ".downTime #timeText" ).removeClass( "none" ).html( "已结束" );
return false;
}
var d = Math.floor( t / 1000 / 60 / 60 / 24 );

var h = Math.floor( t / 1000 / 60 / 60 % 24 );
var i = Math.floor( t / 1000 / 60 % 60 );
var s = Math.floor( t / 1000 % 60 );
$( "#d" ).html( d );
$( "#h" ).html( h );
$( "#i" ).html( i );
$( "#s" ).html( s );
}

}, 100 );

 

posted @ 2017-09-22 09:34  -鹿-  阅读(3929)  评论(0编辑  收藏  举报