Конвертировать строку dd-mm-yyyy в дату - PullRequest
164 голосов
/ 22 августа 2011

Я пытаюсь преобразовать строку в формате дд-мм-гггг в объект даты в JavaScript, используя следующее:

 var from = $("#datepicker").val();
 var to = $("#datepickertwo").val();
 var f = new Date(from);
 var t = new Date(to);

("#datepicker").val() содержит дату в формате дд-мм-гггг.Когда я делаю следующее, я получаю «Неверная дата»:

alert(f);

Это из-за символа «-»?Как я могу преодолеть это?

Ответы [ 13 ]

0 голосов
/ 04 апреля 2019

В принятом ответе есть ошибка

var from = $("#datepicker").val().split("-")
var f = new Date(from[2], from[1] - 1, from[0])

Подумайте, содержит ли указатель даты "77-78-7980", что, очевидно, является недопустимой датой.Это приведет к:

var f = new Date(7980, 77, 77);
=> Date 7986-08-15T22:00:00.000Z

Что, вероятно, не является желаемым результатом.

Причина этого объясняется на сайте MDN :

Где Date вызывается как конструктор с более чем одним аргументом, если значения больше чемих логический диапазон (например, 13 указывается как значение месяца или 70 для значения минут), соседнее значение будет скорректировано.Например, new Date(2013, 13, 1) эквивалентно new Date(2014, 1, 1).


Лучший способ решения проблемы:

const stringToDate = function(dateString) {
  const [dd, mm, yyyy] = dateString.split("-");
  return new Date(`${yyyy}-${mm}-${dd}`);
};

console.log(stringToDate('04-04-2019'));
// Date 2019-04-04T00:00:00.000Z

console.log(stringToDate('77-78-7980'));
// Invalid Date

Это дает вам возможность обрабатывать неверный ввод.

Например:

const date = stringToDate("77-78-7980");

if (date === "Invalid Date" || isNaN(date)) {
  console.log("It's all gone bad");
} else {
  // Do something with your valid date here
}
0 голосов
/ 01 апреля 2017
new Date().toLocaleDateString();

просто, просто передайте свою дату js Date Object

0 голосов
/ 22 августа 2011

Вы можете использовать регулярное выражение.

var result = /^(\d{2})-(\d{2})-(\d{4})$/.exec($("#datepicker").val());
if (result) {
    from = new Date(
        parseInt(result[3], 10), 
        parseInt(result[2], 10) - 1, 
        parseInt(result[1], 10)
    );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...