Ответ 1
12096e5
- это магическое число, которое составляет 14 дней в миллисекундах.
var fortnightAway = new Date(+new Date + 12096e5);
Я использую это, чтобы получить дату:
var currentTime = new Date()
var month = currentTime.getMonth() + 1
var day = currentTime.getDate()
var year = currentTime.getFullYear()
alert(month + "/" + day + "/" + year);
Как я могу добавить 2 недели? Поэтому вместо того, чтобы показывать 10/13/2011, показать 10/27/2011 и т.д.
Вот скрипка: http://jsfiddle.net/25wNa/
Я хочу, чтобы один вход имел +14 дней, а другой +21
Примечание: Я хотел бы, чтобы формат был > 10/13/2011 <.
12096e5
- это магическое число, которое составляет 14 дней в миллисекундах.
var fortnightAway = new Date(+new Date + 12096e5);
var currentTime = new Date();
currentTime.setDate(currentTime.getDate()+14);
сделали для вас фальшивку http://jsfiddle.net/pramodpv/wfwuZ/
Date.prototype.AddDays = function(noOfDays) {
this.setTime(this.getTime() + (noOfDays * (1000 * 60 * 60 * 24)));
return this;
}
Date.prototype.toString = function() {
return this.getMonth() + "/" + this.getDate() + "/" + this.getFullYear().toString().slice(2);
}
$(function() {
var currentTime = new Date();
alert(currentTime.AddDays(14));
});
Попробуйте следующее:
currentTime.setDate(currentTime.getDate()+14);
Хорошо, JS раз в миллисекундах, поэтому добавление двух недель будет результатом разработки двух недель в миллисекундах и добавления этого значения.
var twoWeeks = 1000 * 60 * 60 * 24 * 14;
var twoWeeksTime = new Date(new Date().getTime() + twoWeeks);
var formattedDate = twoWeeksTime.getDate() + '/' + (twoWeeksTime.getMonth()+1) + '/' + twoWeeksTime.getYear();
Конечно, этот метод падает, если вам нужно добавить месяцы, так как они переменные по длине, но это нормально для добавления дней и недель.
В качестве альтернативы вы используете DateJS library, которая имеет функциональные возможности для такого рода вещей (плюс нагрузки больше).
С DateJS ваш код может выглядеть так:
var twoWeeksTime = Date.today().add({ days: 14 });
var formattedDate = twoWeeks.TimetoString('dd/MM/yy');
Надеюсь, что это поможет.
12096e5
не волшебный номер. Всего 14 дней в миллисекунды в экспоненциальной нотации.
Это число является результатом 1000 [мс] * 60 [с] * 60 [м] * 24 [h] * 14 [d] сохранено в экспоненциальной нотации.
Вы можете проверить его, если вы наберете Номер ('12096e5'). Вы получите 1209600000 [мс], что составляет ровно 2 недели в миллисекундах. Экспоненциальная нотация делает ее неясной.
Вы можете написать любое другое число в экспоненциальной нотации, чтобы сделать жизнь ваших коллег-разработчиков более интересной.
Объект Date имеет конструктор, который принимает миллисекунды в качестве аргумента, аргумент которого может быть в экспоненциальной нотации.
var d = новая дата (миллисекунды);
var afterTwoWeeks = new Date(+new Date + 12096e5);
var afterTwoWeeks = new Date(+new Date + 1209600000);
Оба одинаковы.
добавить следующий прототип метода
Date.prototype.addDays = function(days) {
this.setDate(this.getDate()+days);
}
и чем его очень просто использовать,
currentTime.addDays(5);
Если вы форматируете дату javascript в определенном формате, я думаю, вы можете посмотреть на это script http://blog.stevenlevithan.com/archives/date-time-format, Все, что вам нужно сделать после включения script, это new Date(+new Date + 1000* 60 * 60 * 24 * 14).format('dd/mm/yyyy')
, и вы получите вывод "27/10/2011"
script довольно маленький, чуть выше 1 Кбайт. Это ссылка на рабочий скрипт http://jsfiddle.net/naryad/GufvT/