Moment.js "Недействительная дата"

Я просто попытался сделать ввод текста с отформатированной датой. Он отлично работает в Google Chrome, но когда я запускаю его в Mozilla Firefox (26.0), он говорит: Invalid date.

Вы можете видеть и запускать мой пример в обоих браузерах и, надеюсь, понять проблему.

Код JS:

$( "#h_reg_date" ).datepicker();
$("#h_reg_date").datepicker("option", "dateFormat", "yy-M-dd");

$("#save_data").on("click", function(){
 var reg_date = $("#h_reg_date").val();
  console.log(reg_date);
  reg_date =  moment(reg_date).format("YYYY/MM/DD");
  console.log(reg_date);
  return;
});

HTML:

<input type="text" id="h_reg_date"class="abs" style="top:135px; left:150px;" size="10" readonly >
<input type="button" id="save_data" class="abs" style="top:370px; left:-200px;" value="Add Data">

Есть ли какое-либо решение этой проблемы?

Ответы

Ответ 1

Измените формат datepicker на:

$("#h_reg_date").datepicker("option", "dateFormat", "yy/mm/dd");

JS Fiddle: http://jsfiddle.net/MMm86/1/

Чтобы указать дату в запрошенном формате, используйте:

$( "#h_reg_date" ).datepicker();
$("#h_reg_date").datepicker("option", "dateFormat", "yy/M/dd");

$("#save_data").on("click", function(){
 var reg_date = $("#h_reg_date").val();
  console.log(reg_date);
  reg_date =  moment(reg_date).format("YYYY/MMM/DD");
  console.log(reg_date);
  return;
});

JS Fiddle: http://jsfiddle.net/MMm86/2/

Ответ 2

Предположим, что ваша дата находится в формате "DD-MM-YYYY", и вы хотите отобразить ее в формате DD-MMM, тогда вы можете сделать это, сначала сообщив функцию момента, которая отформатирует вашу дату на данный момент, а затем попросит ее преобразовать ее в требуемый формат. Ниже приведен пример:

var taskDueDate = moment(dueDate, 'DD-MM-YYYY').format('DD-MMM');

Таким образом вы можете конвертировать дату в любом формате.

Ответ 3

Кажется, что это известная проблема, за свои документы. http://momentjs.com/docs/#/parsing/string/

Похоже, они предлагают передать в строке времени и формате.