JavaScript и количество дней в месяце
От: engeen Россия  
Дата: 16.11.04 11:08
Оценка:
Приветствую! Ничего не нашел, что помогло бы узнать количество дней в заданном месяце заданного года. Может, кто подскажет?
Re: JavaScript и количество дней в месяце
От: butcher Россия http://bu7cher.blogspot.com
Дата: 16.11.04 11:17
Оценка: -1
Здравствуйте, engeen, Вы писали:

E>Приветствую! Ничего не нашел, что помогло бы узнать количество дней в заданном месяце заданного года. Может, кто подскажет?

Количество дней в заданном месяце ?
Автор: suffiks
Дата: 07.07.04

Нет ничего невозможного..
Re[2]: JavaScript и количество дней в месяце
От: engeen Россия  
Дата: 16.11.04 12:47
Оценка: -5
Здравствуйте, butcher, Вы писали:

B>Здравствуйте, engeen, Вы писали:


E>>Приветствую! Ничего не нашел, что помогло бы узнать количество дней в заданном месяце заданного года. Может, кто подскажет?

B>Количество дней в заданном месяце ?
Автор: suffiks
Дата: 07.07.04


JavaScript в сабже написано? Или нет?
Re[3]: JavaScript и количество дней в месяце
От: butcher Россия http://bu7cher.blogspot.com
Дата: 16.11.04 12:51
Оценка: 2 (1) +2
Здравствуйте, engeen, Вы писали:

B>>Количество дней в заданном месяце ?
Автор: suffiks
Дата: 07.07.04

E>JavaScript в сабже написано? Или нет?
А вы там где-то код увидели? Или количество дней в месяце зависит от языка программирования?
Конкретно: Re: Количество дней в заданном месяце ?
Автор: butcher
Дата: 07.07.04

+ определить високосный год или нет: Re[2]: Количество дней в заданном месяце ?
Автор: Нахлобуч
Дата: 07.07.04

Нет ничего невозможного..
Re: JavaScript и количество дней в месяце
От: Trix Украина  
Дата: 16.11.04 13:29
Оценка: 2 (1)
Здравствуйте, engeen, Вы писали:

E>Приветствую! Ничего не нашел, что помогло бы узнать количество дней в заданном месяце заданного года. Может, кто подскажет?


Внизу функция проверки даты на валидность, повыдерай то, что тебе нужно.
function isValidDate(day, month, year) {
    if (month < 1 || month > 12) {
             return false;
         }
         if (day < 1 || day > 31) {
             return false;
         }
         if ((month == 4 || month == 6 || month == 9 || month == 11) &&
             (day == 31)) {
             return false;
         }
         if (month == 2) {
             var leap = (year % 4 == 0 &&
                        (year % 100 != 0 || year % 400 == 0));
             if (day>29 || (day == 29 && !leap)) {
                 return false;
             }
         }
         return true;
}
... << RSDN@Home 1.1.3 stable >>
Не говори 'гоп', если Гоп рядом!
Re: JavaScript и количество дней в месяце
От: Аноним  
Дата: 13.12.05 14:47
Оценка:
Здравствуйте, engeen, Вы писали:

E>Приветствую! Ничего не нашел, что помогло бы узнать количество дней в заданном месяце заданного года. Может, кто подскажет?


function isbissextile(y)
{
var date=new Date(y,0,365);
if(date.getMonth())y=1;
else y=0;
return y;
}
function getColDey(y,m)
{
if(m==2)
{
d=28+isbissextile(y);
}
else if(m==4 || m==6 || m==9 || m==11)
{
d=30;
}
else
d=31;
}
Re[4]: JavaScript и количество дней в месяце
От: Сэма Россия  
Дата: 13.12.05 15:58
Оценка:
Здравствуйте, butcher, Вы писали:

B>Здравствуйте, engeen, Вы писали:


B>>>Количество дней в заданном месяце ?
Автор: suffiks
Дата: 07.07.04

E>>JavaScript в сабже написано? Или нет?
B>А вы там где-то код увидели? Или количество дней в месяце зависит от языка программирования?
B>Конкретно: Re: Количество дней в заданном месяце ?
Автор: butcher
Дата: 07.07.04

B>+ определить високосный год или нет: Re[2]: Количество дней в заданном месяце ?
Автор: Нахлобуч
Дата: 07.07.04

Вы чего? Какой нафиг високосный год в JavaScript. То что предлагается это классическая задачка по программированию.

А настоящие индейцы делают так:
var MILLIDAY=86400000;
var tmpDate1 = //Воткнуть первое число нужного месяца;
var tmpDate2 = //Воткнуть первое число следующего месяца;
var dVal = модуль_от( tmpDate1.valueOf()-tmpDate2.valueOf() );
var dDate = dVal/MILLIDAY;

Все дело в том, что valueOf() — это количество миллисекунд прошедших от чего-то там.
Ну и MILLIDAY — это заранее просчитаное количество милисекунд в одних сутках.

Извините за вольную интерпретацию.
DIV'анчик дядюшки Сэма. BTLab
Re[5]: JavaScript и количество дней в месяце
От: 12345_ Россия http://javascript.aho.ru
Дата: 14.12.05 15:13
Оценка:
С>var tmpDate1 = //Воткнуть первое число нужного месяца;
С>var tmpDate2 = //Воткнуть первое число следующего месяца;
а если месяц 12-й, то код разрастается на строчку.
проще
D=year%4==0&&(year%100!=0||year%400==0);
nNayInMonth=[31,28+D,31,30,31, ...][month-1];
если month от 1 до 12
Re[6]: JavaScript и количество дней в месяце
От: Сэма Россия  
Дата: 14.12.05 15:29
Оценка:
Здравствуйте, 12345_, Вы писали:

С>>var tmpDate1 = //Воткнуть первое число нужного месяца;

С>>var tmpDate2 = //Воткнуть первое число следующего месяца;
_>а если месяц 12-й, то код разрастается на строчку.
_>проще
D=year%4==0&&(year%100!=0||year%400==0);
_>nNayInMonth=[31,28+D,31,30,31, ...][month-1];
если month от 1 до 12


1) Если это:D=year%4==0&&(year%100!=0||year%400==0); проще, то код ни на какую строчку не возрастет, а будет конструкция (mm==12?1:mm+1) и (mm==12?yyyy+1:yyyy).
2) а еще можно посчитать количество дней между двумя произвольными датами Это так... бонус
DIV'анчик дядюшки Сэма. BTLab
Re: JavaScript и количество дней в месяце
От: DSD Россия http://911.ru/cv
Дата: 14.12.05 22:25
Оценка: -1
Здравствуйте, engeen, Вы писали:

E>Приветствую! Ничего не нашел, что помогло бы узнать количество дней в заданном месяце заданного года. Может, кто подскажет?

function days_in_month(month, year) {
   var MonthDays = [
             [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
             [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
            ];
   if (month<1 || month>12) return 0;
   return MonthDays[((month==2) || ((year%4==0) || ((year%100!=0) || (year%400==0))))?1:0][month-1];
}
--
DSD
Re[2]: JavaScript и количество дней в месяце
От: Сэма Россия  
Дата: 15.12.05 08:02
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Здравствуйте, engeen, Вы писали:


E>>Приветствую! Ничего не нашел, что помогло бы узнать количество дней в заданном месяце заданного года. Может, кто подскажет?

DSD>
DSD>function days_in_month(month, year) {
DSD>   var MonthDays = [
DSD>             [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
DSD>             [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
DSD>            ];
DSD>   if (month<1 || month>12) return 0;
DSD>   return MonthDays[((month==2) || ((year%4==0) || ((year%100!=0) || (year%400==0))))?1:0][month-1];
DSD>}
DSD>

А exceptions уже отменили?
Никогда не делайте так. Функция либо должна выдавать ответ, либо падать на пол и дрыгать ногами в истерике.
Багу такого типа ловить при большом количестве кода долго и трудно.
DIV'анчик дядюшки Сэма. BTLab
Re[3]: JavaScript и количество дней в месяце
От: DSD Россия http://911.ru/cv
Дата: 15.12.05 08:23
Оценка:
Здравствуйте, Сэма, Вы писали:

С>Здравствуйте, DSD, Вы писали:


DSD>>Здравствуйте, engeen, Вы писали:


E>>>Приветствую! Ничего не нашел, что помогло бы узнать количество дней в заданном месяце заданного года. Может, кто подскажет?

DSD>>
DSD>>function days_in_month(month, year) {
DSD>>   var MonthDays = [
DSD>>             [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
DSD>>             [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
DSD>>            ];
DSD>>   if (month<1 || month>12) return 0;
DSD>>   return MonthDays[((month==2) || ((year%4==0) || ((year%100!=0) || (year%400==0))))?1:0][month-1];
DSD>>}
DSD>>

С>А exceptions уже отменили?
С>Никогда не делайте так. Функция либо должна выдавать ответ, либо падать на пол и дрыгать ногами в истерике.

данущаз! какие exceptions в JScript/JavaScript?
с какого перепугу ОНО _ДОЛЖНО_ падать и дрыгать ногами?
это просто сервисная функция, которая как раз _НЕ_ДОЛЖНА_ работать с пользователем и интерфейсом программы на прямую.
поэтому задача этой функции — либо вернуть результат, либо вернуть заранее оговоренным способом значение ошибки. а программист должен возвращаемое значение проверить. либо второй вариант — не вернуть ошибку, а записать в системмную переменную типа errno.

функции в различных библиотеках пишутся именно так.

так что не надо тут всем подряд навязывать ваше субъективное мнение, ок?

P.S. в JavaScript конечно можно поднять exception, но... в большинстве своем юзера пугаются сообщений об ошибках, поэтому обычно все пытаются их как раз таки заглушить или сделать менее страшными(например писать в лог ошибок, а не кидаться в юзера страшными окнами)...

С>Багу такого типа ловить при большом количестве кода долго и трудно.

если вам так угодно, проверяйте возвращаемое значение вне функции сами, и что хотите потом, то и делайте, exception подымайте или еще что.
--
DSD
Re[3]: JavaScript и количество дней в месяце
От: DSD Россия http://911.ru/cv
Дата: 15.12.05 08:30
Оценка: 10 (1) +2
Здравствуйте, Сэма, Вы писали:

DSD>>
DSD>>function days_in_month(month, year) {
DSD>>   var MonthDays = [
DSD>>             [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
DSD>>             [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
DSD>>            ];
DSD>>   if (month<1 || month>12) return 0;
DSD>>   return MonthDays[((month==2) || ((year%4==0) || ((year%100!=0) || (year%400==0))))?1:0][month-1];
DSD>>}
DSD>>

С>А exceptions уже отменили?
С>Никогда не делайте так. Функция либо должна выдавать ответ, либо падать на пол и дрыгать ногами в истерике.
С>Багу такого типа ловить при большом количестве кода долго и трудно.
кстати, если выделенную вами строчку убрать, она не упадет и не задрыгает ногами, а просто вернет NULL или undefined.
ведь это выход за пределы массива, а так как в JScript массив собственно массивом не является(это COM-интерфейс, работающий по принципу HASH — именованного массива c произвольным типом элементов(void *), как в Perl или PHP), то и ошибки не возникнет.
--
DSD
Re[4]: JavaScript и количество дней в месяце
От: Сэма Россия  
Дата: 15.12.05 08:55
Оценка:
Здравствуйте, DSD, Вы писали:
DSD>кстати, если выделенную вами строчку убрать, она не упадет и не задрыгает ногами, а просто вернет NULL или undefined.
DSD>ведь это выход за пределы массива, а так как в JScript массив собственно массивом не является(это COM-интерфейс, работающий по принципу HASH — именованного массива c произвольным типом элементов(void *), как в Perl или PHP), то и ошибки не возникнет.

А вот это правильно Согласен работать с такой функцией.
DIV'анчик дядюшки Сэма. BTLab
Re[6]: JavaScript и количество дней в месяце
От: 12345_ Россия http://javascript.aho.ru
Дата: 31.12.05 00:12
Оценка:
Вот вариант вытаскивания числа дней за счёт встроенных функций JS. Но я не сказал бы, что это выглядит проще (округление введено для учёта летнего времени).
<SCRIPT>
daysInMonth=function(year,month){
    var D=new Date(year, month-1, 1, 12);
    var D0=Date.parse(D);
return parseInt((D.setMonth(D.getMonth()+1)-D0+36e5)/864e5);}

//далее пример:
d=document;
d.write((year=prompt('введите год',2005))+'<br>');
for(i=1;i<=12;i++){
    d.write(i+' '+daysInMonth(year,i)+'<br>');
}
</SCRIPT>
Re[7]: JavaScript и количество дней в месяце
От: 12345_ Россия http://javascript.aho.ru
Дата: 31.12.05 00:19
Оценка:
Или ещё короче и заумней:
<SCRIPT>
daysInMonth=function(year,month){
    var D=new Date(year, month-1, 1, 12);
return parseInt((-Date.parse(D)+D.setMonth(D.getMonth()+1)+36e5)/864e5);}
</SCRIPT>
Re: JavaScript и количество дней в месяце
От: c-smile Канада http://terrainformatica.com
Дата: 31.12.05 22:05
Оценка:
Здравствуйте, engeen, Вы писали:

E>Приветствую! Ничего не нашел, что помогло бы узнать количество дней в заданном месяце заданного года. Может, кто подскажет?


Что-то типа:

function numDaysIn(YEAR,MONTH)
{
  var d = new Date();
  for( var nd = 31; nd >= 28; ++nd )
  {
    d.day = 1;
    d.month = MONTH;
    d.year = YEAR;

    d.day = nd;
    if( d.month == MONTH ) return nd; 
  }
}


объект Date в ECMAScript использует функции,
а это на самом деле мой tiscript),
но это самый идеологически правильный способ.
Re[2]: JavaScript и количество дней в месяце
От: DSD Россия http://911.ru/cv
Дата: 31.05.06 17:01
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Здравствуйте, engeen, Вы писали:


E>>Приветствую! Ничего не нашел, что помогло бы узнать количество дней в заданном месяце заданного года. Может, кто подскажет?

DSD>
DSD>function days_in_month(month, year) {
DSD>   var MonthDays = [
DSD>             [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
DSD>             [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
DSD>            ];
DSD>   if (month<1 || month>12) return 0;
DSD>   return MonthDays[((month==2) || ((year%4==0) || ((year%100!=0) || (year%400==0))))?1:0][month-1];
DSD>}
DSD>


небольшое исправление(в первом варианте я был невнимателен, набивая руками сходу без проверок):
function days_in_month(month, year) {
       var MonthDays = [
                 [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
                 [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
                ];
       if (month<1 || month>12) return 0;
       return MonthDays[((year%4==0) && ((year%100!=0) || (year%400==0)))?1:0][month-1];
}
--
DSD
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.