Теперь следует выполнить практическую задачу по работе с методами объекта Date.
Подсказка для тех, кто захочет выполнить его самостоятельно: в нем нужно будет создавать объект Date для НЕ сегодняшней даты и в качестве параметра указать определенное число миллисекунд (об этом шла речь здесь).
Написать функцию, которая выводит на экран дату, которая наступит через n дней от сегодняшней.
n - количество дней, которое нужно запросить у пользователя при загрузке страницы.
Это значение передаете в функцию в качестве параметра.
При этом итоговую дату надо вывести в нормальном формате на русском языке.
Например, так (пример для ввода числа 79):
Через 79 дней будет вот такая дата:
День недели: Воскресенье
Число: 10
Месяц: Октябрь
Год: 2010
При этом пользователь должен ввести число от 1 до 1000.
Если он не попал в интервал или ввел не число, то надо вывести ошибку.
Проверку можно осуществлять за пределами функции.
Подсказка. Если задание кажется сложным, не спешите смотреть ответ.
Постарайтесь разбить задачу на как можно более мелкие шажки и для начала попробуйте написать код просто для конкретного числа дней, вообще не используя функцию.
<script type = "text/javascript">
var months = ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"]; /* Массив месяцев */
var days = ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница","Суббота"]; /* Массив дней недели */
var day_now = new Date(); /* Объект Date для текущей даты */
var milliNow = day_now.getTime(); /* Число миллисекунд от 1-го января 1970 года до текущей даты */
function now_date(N) /* Функция с одним параметром */
{
var day_after_N = new Date(1000 * 60 * 60 * 24 * N); /* Объект Date для даты через N дней после 1-го января 1970 */
var milliN = day_after_N.getTime(); /* Число миллисекунд в N днях */
var milliNowPlusN = new Date(milliNow + milliN); /* Объект Date для даты через N дней после текущей */
document.write(N + " - через указанное Вами число дней будет следующая ДАТА: <p>");
document.write("Год: " + milliNowPlusN.getFullYear() + "<br>");
document.write("Месяц: " + months[milliNowPlusN.getMonth()] + "<br>");
document.write("День недели: " + days[milliNowPlusN.getDay()] + "<br>");
document.write("Число: " + milliNowPlusN.getDate() + "<br>");
}
var user = prompt("Через какое количество дней от 1 до 1000 Вам интересно знать Дату?"); /* Запрос для пользователя */
var n = Math.round(user); /* Округляем введенное пользователем число */
if (n > 1 && n < 1000) /* Если указанное число находится в диапазоне от 1 до 1000, то... */
{
now_date(n); /* Вызываем функцию */
}
else
{
document.write("Вы указали НЕ число, либо число за пределами диапазона от 1 до 1000")
}
</script>
Условие в этом решении можно было составить немного иначе:
<script type="text/javascript">
if (n > 1000 || n < 1 || isNaN(n)) /* Если указанное число НЕ находится в диапазоне от 1 до 1000 ИЛИ оно НЕ число, то... */
{
document.write("Вы указали НЕ число, либо число за пределами диапазона от 1 до 1000")
}
else
{
now_date(n); /* Вызываем функцию */
}
</script>
Результат будет тот же. Только в первом случае создавалось условие при помощи логического оператора И, а здесь при помощи оператора ИЛИ и, кроме этого, введена проверка на тот случай, если n - это не число при помощи функции isNaN.