2016-04-02 12 views
1

NB: Ich kann nicht die Funktion Datumjavascript Serien Datum Nummer

Ziel verwenden: ein Datum konvertieren, ab 1. Januar 1900 beginnen, 31. Dezember 2199, in denen die Seriennummer 0 von 1 bis 109573. Returns variiert wenn das Datum ungültig ist.

Beispiele:

  1. dateSerialNumber (1, 1,1900) 1
  2. dateSerialNumber zurückgibt (21, 3,2012) liefert 40988
  3. dateSerialNumber (31,12,2199) liefert 109573
  4. dateSerialNumber (31,12,1899) 0 zurück
  5. dateSerialNumber (31,13,2000) 0 zurück
  6. dateSerialNumber (29, 2,1991) 0 zurück

Einige weitere Beispiele: Examples of serial number by year

Ich sollte auch Funktionen verwende ich bereits codiert haben:

  1. dateValid (intDay, intMonth, intYear)
  2. numberDaysInYear (intYear)
  3. numberDaysInMonth (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

Was ist die Seriennummer? Kann es sich ändern? Wenn es auf Millisekunden basiert, ist es einfacher. – Pred05

+0

Was ist Ihre Frage zu der Herausforderung? Welches Problem hast du damit? Was hast du bisher versucht, um es zu lösen? –

+0

@ Pred05 Es scheint die Anzahl der Tage seit dem 31. Dezember 1899 zu sein. Dieses Datum hätte eine Seriennummer von "0", wenn es * gültig * wäre. –

Antwort

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