This question already has answers here:
Compare two dates with JavaScript

(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 DateDate.UTC + new Date的多参数版本(取决于您需要本地还是UTC)。

08-05 22:41
查看更多