Вычисление даты на Javascript

#javascript

#javascript

Вопрос:

У меня есть поле даты, я нажимаю на поле даты, я должен вычислить дату с текущей датой.если введенная дата на месяц старше сегодняшней.Я должен вывести всплывающее сообщение, в котором говорится, что дата старше, чем на 1 месяц.

Формат даты «гггг-ММ-дд». я хочу сравнить дату «1984-03-20» с сегодняшней датой «2011-04-14». это должно возвращать количество месяцев.

Какие-либо подсказки по этому поводу. С уважением,

Чайту

Комментарии:

1. Есть ли у вас объект Date для введенной даты или это просто вся строка?

2. Фелипе: Я получу введенную дату в виде строки в формате гггг-ММ-дд.

3. Тогда вы можете просто выполнить «new Date (theDateString)», чтобы получить объект date. И есть много ответов о том, как использовать объект date ниже.

4. @ Felipe: Не работает с форматом «гггг-ММ-дд».

5. действительно? протестировано в Chrome, и это сработало. Может быть, тогда вы могли бы использовать регулярное выражение. Попробуйте что-то вроде этого: var dateArray = dateString.split(«-«); var date = новая дата (dateArray[0],dateArray[1],dateArray[2])

Ответ №1:

Смотрите это обсуждение, в нем есть демонстрации для получения разницы в дате в javascript. Также это хороший пример: javascript-date-difference-calculation он показывает, как получить разницу в месяце, в неделе или в году.

Комментарии:

1. @user569125: вы можете настроить его так, чтобы он принимал дату в формате гггг-ММ-дд.

Ответ №2:

Возможно, это могло бы вам помочь:

http://www.ozzu.com/programming-forum/javascript-date-comparison-t46552.html

 <script language="JavaScript">

var days = 0;
var difference = 0;

Christmas = new Date("December 25, 2005");

today = new Date();

difference = Christmas - today;

days = Math.round(difference/(1000*60*60*24));

</script>
  

Комментарии:

1. Это не учитывает летнее время.

Ответ №3:

Самый простой способ сравнить даты в javascript — это сначала преобразовать его в объект Date, а затем сравнить эти объекты date.

Ниже вы найдете объект с приведенной ниже функцией:

 dates.inRange (d,start,end)

Returns a boolean or NaN:

    * true if d is between the start and end (inclusive)
    * false if d is before start or after end.
    * NaN if one or more of the dates are illegal.
  

Ответ №4:

 var dt = new Date('02 Jul 2009');
dt.setMonth(dt.getMonth() – 1);
  

Вы можете прочитать об объекте js Date, чтобы увидеть, какие форматы он может принимать.

Блог о форматах даты на JS

Ответ №5:

Вы можете сделать что-то подобное:

    <script type="text/javascript">

        function checkdate (){

           var today = new Date()

           var dating = document.getElementById("date").attr("value");

           var new = new Date(dating);

           var diff = today - new;

           var days = Math.round(diff/(1000*60*60*24));

           if (days >= 30){

                alert("more than one month!");
           }
      }

    </script>

    <html><body>
       <input type="text" id="date" onClick="checkdate();"/>
    </html></body>
  

Ответ №6:

Это должно сработать. Передайте значение поля в dateString onclick, и код определит, является ли дата старше 1 месяца или нет.

 var dateString = '3/26/2011';
var selectDate = new Date(dateString); // convert string to date
var monthOld = new Date();

monthOld.setDate(monthOld.getDate() - 30); // subtract 30 days

if (selectDate < monthOld) {
    alert('older than one month');
}
else alert('ok');
  

Демонстрация:http://jsfiddle.net/cw4vb /

Ответ №7:

Во-первых, я бы посоветовал вам скорректировать ваше требование до 30 дней. Вероятно, это нормально для ваших пользователей и однозначно как для вас, так и для них. 1 месяц может быть разной продолжительности в зависимости от времени года.

для решения начните с

 var millisecond = 1;
var second = 1000;
var minute = second * 60;
var hour = minute * 60;
var day = hour * 24;
var week = day* 7;
  

затем при вводе даты сделайте это

 if (usersDate < new Date().getTime() - 30 * day) {
   //Do popup / whatever
}
  

В качестве альтернативы, если вы действительно хотите использовать интервал, основанный на месяце, тогда выполните

 var now = new Date();
if (usersDate < now.setMonth(now.getMonth() - 1))) {
 //Do popup / whatever
}