Сравнение дат по JavaScript - PullRequest
       2

Сравнение дат по JavaScript

0 голосов
/ 05 августа 2011

У меня есть lead_creat_date, и мне нужно сравнить его с 20 днями до даты (скажем, сегодня август 4-2011, а мне нужно июль 14-2011).Так что сравнение с lead_creat_date и июль-14-2011.

if ( lead_creat_date > july-14-2011) 
{

 alert('lead_creat_date is greater');

}

Как я могу сделать это сравнение в JavaScript?

Я пытаюсь использовать объект даты в JavaScript.Я получил одно число за 20 дней до даты, используя функцию setDate() & getDate(), но я не знаю, как преобразовать lead_creat_date в объект JavaScript date ().

Спасибо.

Ответы [ 3 ]

0 голосов
/ 05 августа 2011

Я предполагаю, что lead_creat_date - это объект Date, поскольку он неясен ...

Это зависит от того, насколько точно вы должны быть. Вы можете сделать что-то вроде этого, которое вернется ровно через 20 дней, с точностью до миллисекунды.

var now = new Date().getTime() - 20 * 24 * 60 * 60 * 1000;

if (lead_creat_date > now) {
    alert('lead_creat_date is greater');
}

Если вы заботитесь только о дне, вы могли бы сделать это

var now = new Date().getTime() - 20 * 24 * 60 * 60 * 1000;
now = new Date(now.toDateString());

if (lead_creat_date > now) {
    alert('lead_creat_date is greater');
}

Ссылки:
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/toDateString
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/getTime

0 голосов
/ 05 августа 2011

Чтобы преобразовать строку в дату, преобразуйте части в числа, чтобы использовать их в качестве входных данных для конструктора Дата . например если ваша дата июля-14-2011 , вы можете конвертировать ее, используя:

var dateString = 'July-14-2011';
var months = {january:0, february:1, march:2, april:3, 
              may:4, june:5, july:6, august:7, september:8,
              october:9, november:10, december:11};

var dateBits = dateString.split('-');
var monthNumber = months[dateBits[0].toLowerCase()];

// Date object for date string
var date = new Date(dateBits[2], monthNumber, dateBits[1]);

// 20 days prior
date.setDate(date.getDate() - 20); // 24 Jun 2011

Редактировать

Если ваш формат даты 27.08.2009 10:23:00, вы можете конвертировать в дату, используя:

var dateString = '8/3/2011 10:23:00 AM';
var dateBits = dateString.split(/[ \/]/);    
var date = new Date(dateBits[2], dateBits[0] - 1, dateBits[1]);
// 20 days prior
date.setDate(date.getDate() - 20); // 14 Jul 2011

alert(date);

Если вам нужно включить время, вы можете включить его, используя ту же стратегию, например,

var dateString = '8/3/2011 10:23:00 AM';
var dateBits = dateString.split(/[ \/:]/);

if (dateBits[6].toLowerCase() == 'pm') {
    dateBits[3] = +dateBits[3] + 12;
}

// Thu 14 Jul 2011 10:23:00
var date = new Date(dateBits[2], dateBits[0] - 1, dateBits[1] - 20,
                    dateBits[3], dateBits[4], dateBits[5]);

и как функция:

function offsetDate(dateString, offset) {
  var dateBits = dateString.split(/[ \/:]/);

  if (dateBits[6].toLowerCase() == 'pm') {
      dateBits[3] = +dateBits[3] + 12;
  }

  return new Date(dateBits[2], dateBits[0] - 1, 
                  +dateBits[1] + +offset, 
                  dateBits[3], dateBits[4], dateBits[5]);
}

// Thu 14 Jul 2011 10:23:00
alert(offsetDate('8/3/2011 10:23:00 AM', -20));
// Tue 23 Aug 2011 22:23:00
alert(offsetDate('8/3/2011 10:23:00 PM', +20));
// Wed 18 Jan 2012 10:23:00
alert(offsetDate('12/29/2011 10:23:00 AM', +20));
0 голосов
/ 05 августа 2011

Вероятно, вы можете использовать метод Date.parse().

Это действительно зависит от формата вашей даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...