2015-10-27 11 views
9

Ich habe ein Rails-generated date und ein jQuery-generated date.Vergleichen von jQuery-Datum mit Rails-Datum

Die Schienen Datumsausdruck- als solche: 2002-10-27

und die jQuery Datumsausdruck- als solche: Tue Aug 14 2001 00:00:00 GMT-0500 (CDT)

Ich möchte überprüfen, ob das jQuery Datum größer oder kleiner ist als die Schienen stammen. Aber unabhängig von den Daten wird das jQuery-Datum immer als größer als das Rails-Datum interpretiert.

Warum ist das, und wie kann ich die beiden Daten erfolgreich vergleichen?

var year = 2001 
var month = 9 
month -- 
var day = 14 
var date = new Date(year, month, day); 
<% @date = Date.today - 18.years %> 
if(date > <%= @date %>) { 
    //this code is always executed, no matter what dates I choose 
} 

UPDATE:

Eigentlich dachte nur ich das Problem aus, dass es nur Daten vor 1969 erlaubt ich den Code soll nur Daten älter als 18 Jahre ermöglichen. Weiß jemand, warum der Unterschied?

UPDATE 2:

testete ich die Zeit Ausgang des 5. Oktober 2000 in meine js Konsole und Schienen-Konsolen, und sie geben die gleichen ersten sechs Ziffern, aber die js Konsole fügt drei Nullen.

var year = 2000 
var month = 10 
month -- 
var day = 5 
var date = new Date(year, month, day); 
date.getTime(); 
=> 970722000000 


Date.new(2000,10,5).to_time.to_i 
=> 970722000 
+0

verwenden Ihre Zeichenfolge ein Datum-Objekt zu erstellen, oder einfach nur JavaScript-Date-Methoden verwenden, um Ihre Vergleichszeit – charlietfl

+0

@charlietfl erstellen Könnten Sie bitte etwas näher erläutern? Was meinst du mit "deiner Schnur"? –

Antwort

3

So stellt sich heraus, dass die js-Konsole Zeiten in Millisekunden druckt, weshalb ich 973404000000 erhielt, im Vergleich zu 973404000 in der Rails-Konsole.

Alles, was ich zu tun hatte, war die js Zeit durch 1000 zu teilen, und das Vergleichen der js Zeit mit den Schienen funktioniert perfekt.

var year = 2000 
var month = 10 
month -- 
var day = 5 
var date = (new Date(year, month, day).getTime()/1000); 
date 
=> 970722000 


Date.new(2000,10,5).to_time.to_i 
=> 970722000 
+0

Eine andere Möglichkeit: Javascript kann Datum als 'var date = new Date(); date.toLocaleDateString(); // "11/1/2015" 'in diesem Format und dann vergleichen Sie es Server-Seite einfach. – vinayakj

1

Sie könnten versuchen, sie beide zu ihren Unix-Zeitstempeln zu konvertieren und diese zu vergleichen. Wenn Sie sich nicht um die Stunden und einfach die Daten kümmern, sollte es funktionieren.

var year = 2001 
var month = 9 
var day = 14 
var date = new Date(year, month, day); 
<% @date = Date.today - 18.years %> 
if (date.getTime() > <%= @date.to_time.to_i %>) { 
    // do something 
} 
+0

Hm, das ist seltsam. Die Art, wie ich den Code vorhatte, sollte verhindern, dass sich jemand unter 18 Jahren anmeldet. Aber anscheinend ist das Problem, es erlaubt nur jedem, der 1969 oder früher geboren wurde. Irgendeine Idee warum das wäre? –

+0

Ah, Sie müssen ein Problem mit einigen Datumsanalysen haben. Wenn du jemals das Datum 31.12.1969 bekommst, wenn du ein Datum analysierst, wird das in Unix timestamp 0 aufgelöst. Ich würde prüfen, ob alles in JS und in Ruby korrekt analysiert wird. – yez

+0

Wie kann ich überprüfen? –

1

Ich würde eine Bibliothek wie Moment.JS verwenden, um Ihre Datenanalyseanforderungen auf der Clientseite zu behandeln. Und dann senden Sie dem Server etwas in einem Standardformat wie ISO8601, um sicherzustellen, dass Sie keine Probleme bei der Fehlinterpretation haben.

Epochenzeit funktioniert auch, aber wie Sie gesehen haben, müssen Sie die Last tragen, sicherzustellen, dass sie in den gleichen Einheiten sind.

3

Benutzer Datum Format Muster für JQuery Datum, für das Datumsformat zu ändern nach rubin Datum oder zweite Option ist nach jquery rubinDatumsFormat konvertieren, mit strftime.

0

Um 2 Termine für mich vergleichen u moment.js

Mit ur Schienen Datum erstellen Moment Datum nicht mehr verwenden kann. Machen Sie dasselbe mit Ihrem jquery Datum.

U kann jetzt einfach die 2 Daten vergleichen.

Wenn u Hilfe benötigen diesen Beitrag sehen: moment-js-date-time-comparison

Verwandte Themen