2010-06-25 6 views
9

je le code suivantJavaScript objets date date UK

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"

Les deux sont au format Royaume-Uni. Lorsque les objets de date sont comparés, dateSetD doit être inférieur à dateMinimumD mais ce n'est pas le cas. Je pense que c'est en rapport avec les faits que j'utilise les dates du Royaume-Uni jj/mm/aaaa. Qu'est-ce que je devrais changer pour que cela fonctionne?

+3

Les dates britanniques sont "jj/mm/aaaa" et non "mm/jj/aaaa". – ChrisF

+0

Été un de ces jours. Question mise à jour – Linda

Répondre

11

Le constructeur JavaScript Date n'analyse pas les chaînes sous cette forme (que ce soit au format britannique ou américain). Voir the spec pour plus de détails, mais vous pouvez construire les dates d'une partie par une partie:

new Date(year, month, day); 

MomentJS pourrait être utile pour traiter des dates avec souplesse. (Cette réponse était précédemment liée à this lib, mais elle n'a pas été conservée depuis longtemps.)

5
  • de Split la date en jour, mois, an pièces en utilisant dateSet.split('/')
  • passer ces pièces dans le bon ordre au Date constructor.
0

Oui, le format de date que vous utilisez présente un problème. Si vous ne définissez pas de format de date, la date par défaut utilisée est 'mm/dd/yy. Donc, vous devez définir votre formate date préférée lorsque vous créez comme suit lorsque vous créez le sélecteur de date:

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

ou vous pouvez définir ultérieurement comme:

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

Lorsque vous essayez de créer une date objet:

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

Exemple:

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

Note: le mois de JavaScript objet Date commence par 00, vous devez ajuster votre dateset en conséquence.

+0

JavaScript n'a pas d'argument de type Python. Ce que vous faites dans l'exemple est d'assigner 'dateSet.year' à une variable globale accidentelle' year'! – bobince

12

Voilà comment je fini par le faire:

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

Notez l'indexation du mois est 0-11.

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]);