2016-05-26 17 views
1

Ich möchte mit dem in db gespeichert einem aktuellen Datum vergleichen und ich bin mit dem folgenden Code für dieseDatum vergleichen mit Javascript

<script> 
$("#registerButton").click(function() { 
var first = $("#scantime").val(); 
var second = $("#scanbartime").val(); 
if (parseInt(first.replace(/-/g,""),10) > parseInt(second.replace(/-/g,""),10)){ 
     alert("Ticket has Expired"); 
    } 
    else { 
    var signintime =$("#scantime").val(); 
    var id = $("#id").val(); 
var y = new Date(); 
var y1=y.getFullYear() + "-" +(y.getMonth()+1) + "-" + y.getDate(); 
y.setHours(y.getHours()+4); 
y1 = y1 + " " + y.getHours()+ ":" + y.getMinutes() + ":" + y.getSeconds(); 
document.getElementById('scanbartime').value = y1; 
var expdate=y1; 
     $.ajax({ 
      url: "updatescan.php", 
      method: "POST", 
     data: {signintime:signintime,expdate:expdate,id:id} , 
dataType:"text", 
      success: function(data) 
         {     
         } 
     }); 
    } 
    }); 
</script> 

Das Format der Anspielzeit ist wie 2016.05.26 21.31: 13 und das Format von scanbartime ist wie 2016-05-26 17: 31: 11.000000 also warum verwende ich Parseint. Mein Problem ist, dass Alarm wird nicht aktiviert werden, wenn erste größer als die zweite ist habe ich auch versucht,

if (first > second) 

aber auch die Warnung wird nicht Danke aktiviert sein

Antwort

0

Sie können und setzen Objekt Javascript Datum erstellen die Wert durch erste und zweite und dann Parsen vergleichen:

> var first = new Date('2016-5-26 21:31:13') 
> var second = new Date('2016-05-26 17:31:11.000000') 
> first > second 
true 
+0

Werte von scantime und scanbartime werden von der db – aristeidhsP

+0

"2016-5-26 21:31:13" ausgegeben. Sie haben diesen Wert, also können Sie ihn in 2 Arrays aufteilen. Dann splitten Sie erneut durch "-" und ":" Stellen Sie Ihr firstDateObject mit diesen Werten ein. Das gleiche gilt für die Sekunde. – Stan

+0

können Sie bitte den Code angeben? – aristeidhsP

0

ich ging mit dem folgenden:

Dies ist, wie Sie diese Zeichenfolge in gültige Date-Objekt-Formate verwandeln können und vergleichen dann das Date-Objekt

// Turn 2016-5-26 21:31:13 into valid Date string to parse 
var time1 = '2016-5-26 21:31:13'; 
time1 = time1.split(' '); 
var split= time1[0].split('-'); 
for(var i = 0; i < split.length; i++){ 
    if(split[i] < 10) 
    split[i] = '0'+split[i]; 
} 
var date1 = new Date(split.join('-') + 'T' + time1[1]); 

// Turn 2016-05-26 17:31:11.000000 into a valid Date string 
// The zeroes at the end dont matter 
var time2 = '2016-05-26 17:31:11.000000'; 
time2 = time2.replace(' ', 'T'); 
var date2 = new Date(time2); 

// Compare the dates 
console.log(date1 < date2); // False 
console.log(date2 < date1); // True 

Von dem, was ich Zeugen des Schlüssel takeway ist, dass der Monat und Tag Nullen aufgefüllt werden sollen und der Abstand zwischen den beiden Strings sollte einen T haben. Die zusätzlichen Nullen für Millisekunden in der zweiten Folge sind irrelevant.

+0

es funktioniert nicht vielleicht fehlt {on if if (split [i] <10) – aristeidhsP

+0

Welchen Fehler bekommen Sie? –