This question already has answers here:
Compare two dates with JavaScript
(38个答案)
上个月关闭。
我正在尝试比较两个日期,这些日期在除iPhone之外的所有设备上都可以正常使用。它在iPhone上发出错误的警报。
jsfiddle
(38个答案)
上个月关闭。
我正在尝试比较两个日期,这些日期在除iPhone之外的所有设备上都可以正常使用。它在iPhone上发出错误的警报。
jsfiddle
function play_time() {
var crntTime;
var today = new Date();
var formattedTime = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
var dd = today.getDate();
var mm = today.getMonth() + 1;
var yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd;
}
if (mm < 10) {
mm = '0' + mm;
}
today = yyyy + '-' + mm + '-' + dd;
var crntDatetime = `${today} ${formattedTime}`;
crntTime = new Date(crntDatetime).getTime();
var check = '2020-08-18 23:14:07';
var gameTime = new Date(check).getTime();
if (crntTime <= gameTime) {
alert('Play');
} else {
alert('Later');
}
}
<button onClick="play_time();"> show Time </button>
最佳答案
通过在check
示例中在日期和时间之间使用空格,您正在偏离规范。这意味着该实现可以使用本地时间或UTC,或拒绝完全解析它。
使用基本上是您拥有的the date time format in the specification,但使用T
而不是空格,或者使用UTC的多参数Date
构造函数(用于本地时间)或Date.UTC
(将结果传递到Date
构造函数中)。如果理想情况下解析字符串,请始终为UTC或时区偏移量指定Z
。仅日期格式("2020-08-19"
)使用UTC进行解析,而日期时间格式("2020-08-19T00:00:00"
)在本地时间进行解析-但在2015-2017年间发生了多次更改,因此依赖它有点冒险。
在您的情况下,由于您已经将信息作为单独的变量使用,因此,我肯定会使用new Date
或Date.UTC
+ new Date
的多参数版本(取决于您需要本地还是UTC)。