日期比较得到错误

时间:2016-02-02 07:47:44

标签: javascript jquery

我们坚持日期比较,我们尝试了以下代码。 EndDate值与2016年1月21日相关,但在显示Fri Sep 01 2017 10:10:10 GMT+0530 (India Standard Time)的警报中,您能否请将您的想法分享给我

var endDateVal = "21/01/2016 10:10:10".replace(/-/gi, "/");
alert(new Date(endDateVal));
if (new Date(endDateVal) > new Date()) {
    alert("Last end date should be minor than today");
}

Fiddle

3 个答案:

答案 0 :(得分:2)

日期格式不正确。日期必须是ISO 8601IETF-compliant RFC 2822格式的日期,例如:

var dateVars = "21/01/2016 10:10:10".match(/\d+/g);
var reformattedDate = dateVars[2] + '-' + dateVars[1] + '-' + dateVars[0] + 'T' + dateVars[3] + ':' + dateVars[4] + ':' + dateVars[5] + '+05:30';
new Date(reformattedDate);

要格式化日期,您可以执行以下操作:

SELECT
    t1.Name
    , AVG(CASE WHEN table_ranked.Rank = 1 THEN table_ranked.value1 ELSE NULL END) - AVG(CASE WHEN table_ranked.Rank = 2 THEN table_ranked.value1 ELSE NULL END)   value1Lag1
    , AVG(CASE WHEN table_ranked.Rank = 2 THEN table_ranked.value1 ELSE NULL END) - AVG(CASE WHEN table_ranked.Rank = 3 THEN table_ranked.value1 ELSE NULL END) value1Lag2
    , AVG(CASE WHEN table_ranked.Rank = 1 THEN table_ranked.value2 ELSE NULL END) - AVG(CASE WHEN table_ranked.Rank = 2 THEN table_ranked.value2 ELSE NULL END) value2Lag1
    , AVG(CASE WHEN table_ranked.Rank = 2 THEN table_ranked.value2 ELSE NULL END) - AVG(CASE WHEN table_ranked.Rank = 3 THEN table_ranked.value2 ELSE NULL END) value2Lag2
FROM table t1
INNER JOIN
(
    SELECT
        t1.Name
        , t1.value1
        , t1.value2
        , COUNT(t2.TimeStamp) Rank
    FROM table t1
    INNER JOIN table t2
        ON t2.name = t1.name
        AND t1.TimeStamp <= t2.TimeStamp
    GROUP BY t1.Name, t1.value1, t1.value2
) table_ranked
    ON table_ranked.Name = t1.Name
GROUP BY t1.Name

答案 1 :(得分:0)

首先,new Date("21/01/2016 10:10:10")返回Invalid Date。日期的默认格式为mm/dd/yyyy,而不是dd/mm/yyyy

其次,在比较日期时,您应该使用date.getTime()代替。

以下是示例代码。

var endDateVal = "02/21/2016 10:10:10";
var d1 = new Date(endDateVal)
var d2 = new Date();

console.log(d1, d2)
if (+d1 > +d2) {
  alert("Last end date should be minor than today");
}

答案 2 :(得分:0)

您需要将您的日/月更换为01/21/2016 10:10:10

此外,我不确定您使用.replace(/-/gi, "/");的原因,因为这会将-替换为/,其中您的日期没有任何-