#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, чтобы увидеть, какие форматы он может принимать.
Ответ №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
}