首先啰嗦一段,我们想得到某个时间的时间戳,一般想到的是用 Date.parse(new Date("2017-10-23 16:35:22"))这样写对不。这样写的确是没毛病,符合逻辑,而且在安卓运行是杠杠的,但在ios呢,不好意思啦,我并不认识你这个是什么。从后台打印可以看见Date.parse(new Date("2017-10-23 16:35:22"))返回的是NaN。查了资料才发现原来是ios系统并不支持这样写,需要将时间用split(/[- : \/]/)分割,割出来之后再进行new Date();
下面例子是根据某个下单时间到当前的时间算出这个订单还剩下多少时间可以进行支付(下单时间开始算,不能超过30分钟,需要将代码运行测试的可以将shanOrderTime的时间和现在的时间控制在30分钟之内即可)
areaTime
:
function
(
timeValue
)
{
var
that
=
this
;
var
shanOrderTime
=
"2017-10-23 17:35:39";
var
arr
=
shanOrderTime
.
split
(
/[- : \/]/
);
var
date
=
new
Date
(
arr
[
0
],
arr
[
1
]
-
1
,
arr
[
2
],
arr
[
3
],
arr
[
4
],
arr
[
5
]);
// arr[1]-1是月份,一定要记得减1
var
order_time
=
Date
.
parse
(
new
Date
(
date
));
// console.log("获取订单时间:" + order_time);
var
nowTime
=
Date
.
parse
(
new
Date
());
// console.log("现在的时间:" + nowTime);
var
differ_time
=
nowTime
-
order_time
;
var
leftTime
=
1800000
-
differ_time
;
var
d
=
new
Date
(
leftTime
);
// console.log("时间差:" + differ_time);
if
(
leftTime
<
0
)
{
console
.
log
(
"该订单已超时"
);
}
else
{
var
interval
=
setInterval
(
function
()
{
var
m
=
d
.
getMinutes
();
var
s
=
d
.
getSeconds
();
that
.
setData
({
"minute1"
:
parseInt
(
m
/
10
)
});
that
.
setData
({
"minute2"
:
parseInt
(
m
%
10
)
});
that
.
setData
({
"second1"
:
parseInt
(
s
/
10
)
});
that
.
setData
({
"second2"
:
parseInt
(
s
%
10
)
})
if
(
m
==
0
&&
s
==
0
)
{
clearInterval
(
interval
);
return
;
}
d
.
setSeconds
(
s
-
1
);
},
1000
);
}
},