Låt oss säga att jag har två datum
Datum 1 2007-06-14
Datum 2 2008-10-25T14:57:52+02:00
Hur kollar jag enklast om datum 1 är lägre än datum 2?
3 svar · 369 visningar · startad av Pedda
Låt oss säga att jag har två datum
Datum 1 2007-06-14
Datum 2 2008-10-25T14:57:52+02:00
Hur kollar jag enklast om datum 1 är lägre än datum 2?
Det finns ingen färdig funktion i Date-objektet för att plocka ut datum från ISO-strängen utan den måste byggas själv. Likadant så är det första datumet inte korrekt formaterat för att skapa ett korrekt datum via new Date(). Lösningen får alltså bli såhär för dina datum.
<script>
Date.prototype.setISO8601 = function (string) {
var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
"(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
"(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
var d = string.match(new RegExp(regexp));
var offset = 0;
var date = new Date(d[1], 0, 1);
if (d[3]) { date.setMonth(d[3] - 1); }
if (d[5]) { date.setDate(d[5]); }
if (d[7]) { date.setHours(d[7]); }
if (d[8]) { date.setMinutes(d[8]); }
if (d[10]) { date.setSeconds(d[10]); }
if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
if (d[14]) {
offset = (Number(d[16]) * 60) + Number(d[17]);
offset *= ((d[15] == '-') ? 1 : -1);
}
offset -= date.getTimezoneOffset();
time = (Number(date) + (offset * 60 * 1000));
this.setTime(Number(time));
}
var oldDate=new Date();
var newDate=new Date();
oldDate.setDate(14)
oldDate.setMonth(5) //javscripts datum räknar från 0
oldDate.setFullYear(2007)
newDate.setISO8601("2008-10-25T14:57:52+02:00")
alert(oldDate)
alert(newDate)
alert(oldDate<newDate)
</script>
Har du däremot två redan skapadae datum i javascript som du vet är korrekta är det bara att använda lt ( < ) och gt ( > ).
Ok, får kolla på det.
Datum 1 kommer från ett formulär och datum 2 hämtar jag från en xml fil.
Om jag var osäker på hur folk skrev in dem via formuläret hade jag skrivit ett regeexp och försökt hämta ut uppgifterna med det.