Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Посчет дней в году (https://javascript.ru/forum/misc/27047-poschet-dnejj-v-godu.html)

Anastasiy17 01.04.2012 14:00

Посчет дней в году
 
Задачка вот такая:
Создайте Web-страницу, в которой по введенным с помощью окна параметрам: prompt номеру дня в месяце, наименованию месяца и типу года (високосный или не високосный) подсчитывается и выдается (с помощью окна alert) номер дня в году. Указание: количество дней до начала данного месяца (невисокосный год): январь – 0, февраль – 31, март – 59, апрель – 90, май – 120, июнь – 151, июль – 181, август – 212, сентябрь – 243, октябрь – 273, ноябрь – 314, декабрь – 334. В високосном году, начиная с марта, к количеству дней добавляется 1.
Ну в принципе все понятно, задаеш 12 массивов и работаеш с ними, но for i if не работают. Выбивает просто пустое окно(
<html>
<head>
<script>
     <!--
		function Years;
var a[1]=0,a[2]=31,a[3]=59,a[4]=90,a[5]=120,a[6]=151,a[7]=181,a[8]=212,a[9]=243,a[10]=273,a[11]=314,a[12]=334;
var day=prompt("введите день:");
var month=prompt("введите месяц;");
var typey=prompt("введите тип года");
if(typey==0)//если невыскокосный год
{
for(i=1,i=<12,i++)
{
if (month==i)
{
day=day+a[i]
};
};
else
{
for (i=1;i=<12;i++)
if (month==i||month<=3)
{
day=day+a[i]
}
else //если выскокосный
if (month==i||month>=3)
{
day=day+a[i]+1
}
 }
alert("day)
  // -->
</script>
</head>
<body>
 <script language="JavaScript">
<!--
Years();
// -->
</script>
</body>
</html>

Помогите пожалуйста)

Riim 01.04.2012 14:28

var day = prompt('Номер дня в месяце:'),
	month = ['январь', 'февраль', 'март', 'апрель',
		'май', 'июнь', 'июль', 'август', 'сентябрь',
		'октябрь', 'ноябрь', 'декабрь'].indexOf(prompt('Название месяца:')),
	year = prompt('Год високосный:') == 'да' ? 1972 : 1970;

alert(
	'Номер дня в году: '
		+ (new Date(year, month, day) - new Date(year, 0, 0)) / 864e5
);

Anastasiy17 01.04.2012 14:39

Спасибо,Riim!)
А не могли бы розкажать про:
(new Date(leap ? 1972 : 1970, month, day) - new Date(leap ? 1972 : 1970, 0, 0)) / 864e5
8 );

Что именно оно делает?

Riim 01.04.2012 15:32

Дата - это число миллисекунд с 1970-1-1. Первая дата с месяцем и днем, вторая с нулями (года одинаковые), разница - число миллисекунд до нужной даты от начала года, делим на число миллисекунд в дне - 864e5, получаем число дней до нужной даты от начала года.


Часовой пояс GMT +3, время: 02:48.