2010-06-25 12 views
9

Ich habe den folgenden CodeJavaScript-Datum Objekte UK Daten

datePicker.change(function(){ 
     dateSet = datePicker.val(); 
     dateMinimum = dateChange(); 
     dateSetD = new Date(dateSet); 
     dateMinimumD = new Date(dateMinimum); 
     if(dateSetD<dateMinimumD){ 
      datePicker.val(dateMinimum); 
      alert('You can not amend down due dates'); 
     }  
    }) 

dateSet = "01.07.2010" dateMinimum = "23/7/2010"

Beide sind UK-Format. Wenn die Datumsobjekte verglichen werden, sollte dateSetD kleiner als dateMinimumD sein, ist es aber nicht. Ich denke, es ist mit den Fakten zu tun, die ich verwende UK-Daten TT/MM/JJJJ. Was müsste ich ändern, damit das funktioniert?

+3

UK-Daten sind "TT/MM/JJJJ" nicht "MM/TT/JJJJ". – ChrisF

+0

war einer dieser Tage. Aktualisierte Frage. – Linda

Antwort

11

Das JavaScript Date Konstruktor analysiert Zeichenfolge nicht in dieser Form verwendet (ob in UK oder US-Format). Siehe the spec für Details, aber Sie können die Termine Teil für Teil konstruieren:

new Date(year, month, day); 

MomentJS könnte nützlich sein, flexibel mit Terminen für den Umgang. (Diese Antwort wurde zuvor verknüpft mit this lib, aber sie wurde lange nicht mehr gepflegt.)

5
  • Split das Datum in Tag, Monat, Jahr Teile dateSet.split('/')
  • Führen Sie diese Teile in der richtigen Reihenfolge auf die Date constructor.
0

Ja, es gibt ein Problem mit dem von Ihnen verwendeten Datumsformat. Wenn Sie kein Datumsformat festlegen, wird als Standarddatum 'mm/dd/yy verwendet. So sollten Sie Ihren Wunschtermin Format einstellen, wenn Sie es wie folgt erstellen, wenn Sie die Datumsauswahl zu erstellen:

$(".selector").datepicker({ dateFormat: 'dd/mm/yyyy' }); 

oder Sie können es später eingestellt, wie:

$.datepicker.formatDate('dd/mm/yyyy'); 
0

Wenn Sie versuchen, ein Datum zu erstellen Objekt:

new Date(year, month, day, hours, minutes, seconds, milliseconds) 

Beispiel:

dateSetD = new Date(dateSet.year, dateSet.month, dateSet.day); 

Hinweis: JavaScript Der Monat des Datumsobjekts beginnt mit 00, daher müssen Sie das Datumsset entsprechend anpassen.

+0

JavaScript hat keine Schlüsselwörter im Python-Stil. Was Sie in diesem Beispiel tun, ist die Zuordnung von 'dateSet.year' zu einer zufälligen globalen Variable' year'! – bobince

12

Dies ist, wie ich es tun endete:

var lastRunDateString ='05/04/2012'; \\5th april 2012 
var lastRunDate = new Date(lastRunDateString.split('/')[2], lastRunDateString.split('/')[1] - 1, lastRunDateString.split('/')[0]); 

Hinweis der Monat Indizierung 0-11 ist.

7
var dateString ='23/06/2015'; 
var splitDate = dateString.split('/'); 
var month = splitDate[1] - 1; //Javascript months are 0-11 

var date = new Date(splitDate[2], month, splitDate[0]); 
Verwandte Themen