Очень старая нить, я знаю, но вот мой вклад, поскольку поток еще не решен.
Это требует високосных лет и не предполагает фиксированного количества дней в месяц или год.
Это может быть ошибочным в пограничных случаях, поскольку я не тестировал его полностью, но он работает на все даты, указанные в исходном вопросе, поэтому я уверен.
function calculate() {
var fromDate = document.getElementById('fromDate').value;
var toDate = document.getElementById('toDate').value;
try {
document.getElementById('result').innerHTML = '';
var result = getDateDifference(new Date(fromDate), new Date(toDate));
if (result && !isNaN(result.years)) {
document.getElementById('result').innerHTML =
result.years + ' year' + (result.years == 1 ? ' ' : 's ') +
result.months + ' month' + (result.months == 1 ? ' ' : 's ') + 'and ' +
result.days + ' day' + (result.days == 1 ? '' : 's');
}
} catch (e) {
console.error(e);
}
}
function getDateDifference(startDate, endDate) {
if (startDate > endDate) {
console.error('Start date must be before end date');
return null;
}
var startYear = startDate.getFullYear();
var startMonth = startDate.getMonth();
var startDay = startDate.getDate();
var endYear = endDate.getFullYear();
var endMonth = endDate.getMonth();
var endDay = endDate.getDate();
// We calculate February based on end year as it might be a leep year which might influence the number of days.
var february = (endYear % 4 == 0 && endYear % 100 != 0) || endYear % 400 == 0 ? 29 : 28;
var daysOfMonth = [31, february, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var startDateNotPassedInEndYear = (endMonth < startMonth) || endMonth == startMonth && endDay < startDay;
var years = endYear - startYear - (startDateNotPassedInEndYear ? 1 : 0);
var months = (12 + endMonth - startMonth - (endDay < startDay ? 1 : 0)) % 12;
// (12 + ...) % 12 makes sure index is always between 0 and 11
var days = startDay <= endDay ? endDay - startDay : daysOfMonth[(12 + endMonth - 1) % 12] - startDay + endDay;
return {
years: years,
months: months,
days: days
};
}
<p><input type="text" name="fromDate" id="fromDate" placeholder="yyyy-mm-dd" value="1999-02-28" /></p>
<p><input type="text" name="toDate" id="toDate" placeholder="yyyy-mm-dd" value="2000-03-01" /></p>
<p><input type="button" name="calculate" value="Calculate" onclick="javascript:calculate();" /></p>
<p />
<p id="result"></p>
Можно использовать Aptana Studio с плагином Eclipse PyDev , чтобы сделать все это (и намного больше). Лучшая вещь состоит в том, что это является межплатформенным, таким образом, можно установить его на любом компьютере, Вы делаете техническую разработку на и не должны изучить несколько IDE.
Я не уверен, какая платформа Вы идете, но Textmate может сделать все это, как может Emacs. Я услышал, что Электронный текстовый редактор хорош в Windows (никогда не использовал его хотя).
я настоятельно рекомендовал бы, чтобы Вы заменили свой "develop-debug-FTP" цикл "тесты записи, разработали, запустили тесты, согласились на управление версиями" цикл. Можно затем выехать из управления версиями на загрузки ftp, а не рабочий сервер. Я настоятельно рекомендую не использовать ftp с веб-приложением (такой как, что Вы создадите с Django).
Вы извлечете больше пользы из тестирования и управления версиями, чем от использования лучшего Язя в мире.
Zeus IDE имеет HTML и подсветка синтаксиса CSS , и это может также быть настроено, чтобы сделать бесшовный FTP / редактирование SFTP.
Мы используем Редактирование Комодо .
можно определить огромное множество сложных команд - с помощью сценариев.
я еще не записал команду передачи FTP, но я сделал все остальное путем добавления команд к моему проекту в Комодо.
Я использую энергию для Python и django. Это свободно, непреклонно как скала, имейте много полезных плагинов и многочисленного сообщества. Для python/django кодирование у Вас есть автозавершение, добавляет подсветка синтаксиса для шаблонов django.
Кода хороша также для веб-разработки. Наверняка это обрабатывает Python, я не знаю то, что могло означать поддержку Python Django, но с кодой можно работать непосредственно через FTP и сделать другой хороший материал (также управление версиями SVN, и имеет хороший интегрированный блендер CSS).
Для Windows, когда я разработал веб-приложения (в PHP) я нашел очень полезный PHPEd, но я не думаю, что он может обработать Python.
Netbeans не сделает то, в чем Вы нуждаетесь все же (он сделает часть его - т.е. он имеет некоторое знание HTML и CSS), но за этим может стоить следить. Существует некоторая ранняя версия доступной поддержки Python, и я полагаю, что поддержка django, как ожидают, будет добавлена.
я не могу ручаться за качество (поскольку я не использую ни Python, ни django), однако рубин / ruby+rails поддержка работ netbeans хорошо, и это поддерживает другие языки, такие как Java и отличный хорошо также.
Тем временем, textmate / E является, вероятно, Вашим лучшим выбором. Многие люди используют это, а не IDE так или иначе.
Для django я использую Eclipse+PyDev. Это ни в коем случае не полное решение завершения кода, но это - хороший интерфейс, и это получит Вас длинный путь.
Теперь для HTML, я использую другого редактора. Eclipse действительно имеет плагин Aptana (который является довольно хорошо), но я нахожу это немного неуклюжим. Посмотрите на него и посмотрите то, что Вы видите. Существует, конечно, достаточно редакторов HTML там, чтобы Вы нашли что-то, что соответствует Вашему потоку. Просто помните, что нет никакой причины, почему необходимо сделать Python и HTML в том же редакторе. Ни один вообще.
С точки зрения выставления Вашего кода, я умоляю Вас, чтобы видеть ошибку Ваших путей и переместиться в своего рода систему управления версиями. Я использую Базар , но существуют загрузки там с различными преимуществами. Они требуют времени для привыкания к, но они хорошо, определенно стоящие начальных инвестиций времени.
Можно сделать хуже, чем DreamWeaver для HTML / CSS / визуальная сторона. Также попробуйте Netbeans за части программирования - кажется, поддерживает большинство языков.
Я запустил вопрос, очень похожий на это, надо надеяться, обсуждение приносит пользу Вам:
https://stackoverflow.com/questions/365676/which-ide-is-for-me
С наилучшими пожеланиями,
IntelliJ IDEA имеет лучшую поддержку HTML, CSS и JavaScript. Он поднимает веб-разработчика до уровня Java-разработчиков.
Я никоим образом не связан с IntelliJ, и, к сожалению, там, где я сейчас работаю, мы не используем его.
Недавно JetBrains выпустила новую IDE для Django: http://www.jetbrains.com/pycharm/