【问题标题】:compare string with today's date in JavaScript在 JavaScript 中将字符串与今天的日期进行比较
【发布时间】:2013-02-10 09:38:45
【问题描述】:

我从输入字段中获得了一个字符串,我将其用于日期,格式类似于 25-02-2013。现在我想将字符串与今天的日期进行比较。我想知道字符串是比今天的日期旧还是新。

有什么建议吗?

【问题讨论】:

标签: javascript date date-comparison


【解决方案1】:
    <script type="text/javascript">

var q = new Date();
var m = q.getMonth()+1;
var d = q.getDay();
var y = q.getFullYear();

var date = new Date(y,m,d);

mydate=new Date('2011-04-11');
console.log(date);
console.log(mydate)

if(date>mydate)
{
    alert("greater");
}
else
{
    alert("smaller")
}


</script>

【讨论】:

  • 我认为你需要确保两个日期都是 iso 格式 YYYY-MM-DD 以避免错误,可以使用 toISOString()
  • 为什么要创建 3 个日期?这是没有意义的
  • 不应该是var d = q.getDate(); 来获取月份中的某天吗,我认为你所拥有的就是星期几。
【解决方案2】:

确切的日期比较并从接受的答案中解决了错误

var q = new Date();
var m = q.getMonth();
var d = q.getDay();
var y = q.getFullYear();

var date = new Date(y,m,d);

mydate=new Date('2011-04-11');
console.log(date);
console.log(mydate)

if(date>mydate)
{
    alert("greater");
}
else
{
    alert("smaller")
}

【讨论】:

  • 不应该是 var d = q.getDate();得到一个月中的哪一天,你所拥有的就是我认为的星期几。
【解决方案3】:

您可以使用简单的比较运算符来查看日期是否大于另一个日期:

var today = new Date();
var jun3 = new Date("2016-06-03 0:00:00");

if(today > jun3){
    // True if today is on or after June 3rd 2016
}else{
    // Today is before June 3rd
}

我将0:00:00 添加到第二个变量的原因是因为没有它,它将与UTC(格林威治)时间进行比较,这可能会给您带来不希望的结果。如果您将时间设置为 0,那么它将与用户的本地午夜进行比较。

【讨论】:

    【解决方案4】:

    使用 Javascript Date 对象对您来说会更容易。但由于Date 对象不支持您的格式,我认为您必须使用“-”解析您的输入字符串(例如:25-02-2013)以获取datemonthyear,然后使用@ 987654326@ 用于比较的对象。

    var x ='23-5-2010';
    var a = x.split('-');
     var date = new Date (a[2], a[1] - 1,a[0]);//using a[1]-1 since Date object has month from 0-11
     var Today = new Date();
     if (date > Today)
        alert("great");
     else
        alert("less");
    

    【讨论】:

    • 第 3 行应该是 var date = new Date (a[0], a[1] - 1,a[2]);
    • @k29 否。日期对象接受年、月、日顺序的参数。使用 OP 的输入字符串 a[2] 是年份,所以我的陈述是正确的。请检查
    • 对不起,你是对的。我想我在尝试代码时复制了其他答案中的一个字符串。
    【解决方案5】:

    如果您的日期输入格式为“25-02-2013”​​,您可以使用 split() 方法将字符串拆分为 DD、MM 和 YYYY:

    var date_string="25-02-2013";
    
    var day  = parseInt(date_string.split("-")[0]);
    var month= parseInt(date_string.split("-")[1]);
    var year = parseInt(date_string.split("-")[2]);
    

    parseInt() 函数用于将字符串变成整数。然后可以将这 3 个变量与 Date() 对象的属性进行比较。

    【讨论】:

      【解决方案6】:

      进行日期比较时需要记住的最重要的点

      • 两个日期的格式应该相同才能得到准确的结果。
      • 如果您使用日期时间格式并且只想进行日期比较,请确保将其转换为相关格式。

      这是我使用的代码。

                 var dateNotifStr = oRecord.getData("dateNotif");
                 var today = new Date();       
                 var todayDateFormatted = new Date(today.getFullYear(),today.getMonth(),today.getDate());
      
                 var dateNotif=new Date(dateNotifStr);
                 var dateNotifFormatted = new Date(dateNotif.getFullYear(),dateNotif.getMonth(),dateNotif.getDate());
      

      嗯,这可以进一步优化,但这应该让您清楚地了解以统一格式制作日期所需的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-24
        • 1970-01-01
        • 1970-01-01
        • 2014-09-09
        • 1970-01-01
        • 2012-05-10
        • 2014-11-03
        相关资源
        最近更新 更多