2010-06-25 2 views
9

У меня есть следующий кодJavaScript дата объекты 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"

формата Оба Великобритания. Когда сопоставляются объекты даты dateSetD должен быть меньше, чем dateMinimumD, но это не так. Я думаю, что это связано с фактами, которые я использую в датах Великобритании dd/mm/yyyy. Что мне нужно изменить, чтобы заставить это работать?

+3

Даты Великобритании "dd/MM/yyyy" не "mm/dd/yyyy". – ChrisF

+0

Был один из тех дней. Обновленный вопрос. – Linda

ответ

11

JavaScript Date конструктор не анализирует строки в этой форме (будь то в Великобритании или в США). См the spec подробности, но вы можете построить даты по частям:

new Date(year, month, day); 

MomentJS может быть полезным для работы с датами гибко. (Этот ответ ранее был связан с this lib, но он не поддерживался в течение длительного времени.)

5
  • Split даты в день, месяц, год части с помощью dateSet.split('/')
  • Передайте эти части в правильном порядке к Date constructor.
0

Да, проблема с используемым форматом даты. Если вы не устанавливаете формат даты, используемая по умолчанию дата равна 'mm/dd/yy. Таким образом, вы должны установить предпочтительную дату формиат при ее создании следующим образом при создании выбора даты:

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

или вы можете установить его позже:

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

При попытке создать дату объект:

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

Пример:

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

Примечание: JavaScript Дата месяца объекта начинается с 00, поэтому вам необходимо соответствующим образом настроить даты.

+0

JavaScript не содержит аргументов ключевого слова в стиле Python. То, что вы делаете в этом примере, присваивает 'dateSet.year' случайную глобальную переменную' year'! – bobince

12

Это, как я в конечном итоге делает это:

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

Примечание месяц индексации от 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]); 
Смежные вопросы