2016-04-02 2 views
1

NB: Я не могу использовать функцию ДатаJavascript дата серийный номер

Цель: преобразовать дату, начиная с 1 января 1900 года по 31 декабря 2199, в серийном номере, который изменяется от 1 до 109573. Возвращает 0 если дата недействительна.

Примеры:

  1. dateSerialNumber (1, 1,1900) возвращает 1
  2. dateSerialNumber (21, 3,2012) возвращает 40988
  3. dateSerialNumber (31,12,2199) возвращает 109573
  4. dateSerialNumber (31,12,1899) возвращает 0
  5. dateSerialNumber (31,13,2000) возвращает 0
  6. dateSerialNumber (29, 2,1991) возвращает 0

еще несколько примеров: Examples of serial number by year

Я должен также использовать функции Я уже закодированные:

  1. dateValid (intDay, intMonth, intYear)
  2. numberDaysInYear (intYear)
  3. номерDaysInMonth (intMonth, intYear)

1)

function dateValid(intDay, intMonth, intYear) { 
 
    if ((intYear >= 1900 && intYear <= 2199) && (intMonth >= 1 && intMonth <= 12) 
 
     && (intDay >= 1 && intDay <= numberDaysInMonth(intMonth, intYear))) { 
 
     return true; 
 
    }else return false; 
 

 
}

2)

function numberDaysInYear(intYear) { 
 
    if(bissextile(intYear)) return '366' 
 
    else return '365' 
 
}

3)

function numberDaysInMonth(intMonth, intYear) { 
 
    return new Date(intYear, intMonth, 0).getDate(); 
 
}

+0

Что такое серийный номер? Может ли это измениться? Если он основан на миллисекундах, это проще. – Pred05

+0

Каков ваш вопрос о вызове? Какая проблема у вас с этим? Что вы пытались решить до сих пор? –

+0

@ Pred05 Кажется, что число дней с 31 декабря 1899 года. Эта дата имела бы серийный номер '0', если бы он был * действительным *. –

ответ

0
if(!dateValid(intDay, intMonth, intYear)) 
    return 0 

var serialNumber = 0 

for (var i = 1900; i < intYear; i++) 
    serialNumber += numberDaysInYear(i) 

for (var i = 1; i < intMonth; i++) 
    serialNumber += numberDaysInMonth(i, intYear) 

return serialNumber + intDay 
Смежные вопросы