Показать сообщение отдельно
  #1 (permalink)  
Старый 05.11.2013, 19:59
Аспирант
Отправить личное сообщение для Apollon Посмотреть профиль Найти все сообщения от Apollon
 
Регистрация: 01.11.2013
Сообщений: 42

Вывод даты. Какой способ лучше?
Всем привет.
Это мой второй вопрос на форуме и вторая неделя изучения JS, потому прошу не кидаться помидорами или еще чем-нибудь...
Сегодня решал следующую задачу:
Необходимо вывести на экран дату, которая будет через заданное пользователем количество дней. Количество дней, вводимое пользователем, не должно быть < 1 и > 1000, иначе вывести сообщение с ошибкой. Выведенная запись должна соответствовать образцу : "Через 20 дней будет Понедельник 25.11.2013 год". Слово "дней" должно склоняться при изменении количества введенных дней.
Решил ее способом, приведенным ниже. Однако, меня смущает количество используемых условий. Можно ли так делать? И есть ли другие способы решения?
Просьба укажите, какие методы вы использовали в решении задачи, чтобы мне было проще в них разобраться.
var day = prompt("Введите количество дней от 1 до 1000");
	function myDate (myDay) {
	var now = new Date();
	var from1970 = now.getTime();
	var res = new Date(1000*60*60*24*myDay + from1970);
	var myDays = ["Восскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"];
	var week = new Date(res);
	var dayX = res.getDate();
	var monthX = res.getMonth() + 1;
	var yearX = res.getFullYear();
	if(dayX < 10){
			var dayX = "0" + dayX;
		}
	if(monthX < 10){
		var monthX = "0" + monthX;
	}
	
	if (day < 1 || day > 1000  || isNaN(day)){
		document.write("Вы ввели не коректное число");

	}


	else if ((day[day.length - 2] == 1)  && (day[day.length - 1] ==  1)){
		document.write("Через " + day + " дней будет " + myDays[week.getDay()] + " " + dayX + "." + monthX + "." + yearX + " год");
	}

	else if (day[day.length - 1] == 1){
		document.write("Через " + day + " день будет " + myDays[week.getDay()] + " " + dayX + "." + monthX + "." + yearX + " год");
	}

	else if ((day[day.length - 2] == 1 && day[day.length - 1] == 1) || (day[day.length - 2] == 1 && day[day.length - 1] == 2) || (day[day.length - 2] == 1 && day[day.length - 1] == 3) || (day[day.length - 2] == 1 && day[day.length - 1] == 4)){
		document.write("Через " + day + " дней будет " + myDays[week.getDay()] + " " + dayX + "." + monthX + "." + yearX + " год");
	}


	else if (day[day.length - 1] == 2 || day[day.length - 1] == 3 || day[day.length - 1] == 4){
		document.write("Через " + day + " дня будет " + myDays[week.getDay()] + " " + dayX + "." + monthX + "." + yearX + " год");
	}


	else{
		document.write("Через " + day + " дней будет " + myDays[week.getDay()] + " " + dayX + "." + monthX + "." + yearX + " год");
	}
	}
	myDate(day);
Ответить с цитированием