Преобразовать строку даты AM / PM в дату javascript, используя jquery - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть такая строка даты 20/09/2018 12:00 AM.Мне нужно прекратить ставить предыдущую дату, чем сегодня.Я изумлённо за это.Но в этом формате ответа не найдено.Мне нужен формат даты по умолчанию javascript, чтобы я мог сравнить с новым значением Date ().Кто-нибудь может помочь?Когда я использую следующий формат, это показывает сообщение, которое говорит invalid date из-за моего dd/MM/yyyy hh:mm tt формата.Пожалуйста, помогите.

alert(new Date("20/09/2018 12:00 AM"));

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Игорь рекомендовал использовать moment.js для решения этой проблемы - это широко используемая библиотека даты / времени.

С помощью moment.js вы можете сделать это:

var m = moment("20/09/2018 3:14 PM", "DD/MM/YYYY h:mm a");
var d = m.toDate();

Первая строка создает объект «момент» путем анализа даты в соответствии со строкой формата, указанной в качестве второго аргумента.См. http://momentjs.com/docs/#/parsing/

Вторая строка получает нативный объект javascript Date, который инкапсулирует объект момента;однако момент может сделать так много вещей, что вам может не понадобиться вернуть этот нативный объект.

См. момент документы .

0 голосов
/ 20 сентября 2018

Ваш формат неверен, поэтому вы получаете ошибку invalid date.Итак, используя ваш формат (дд / мм / гггг чч: мм тт), мы возьмем год, месяц, день, часы и минуты, затем переформатируем его в приемлемый формат с помощью конструктора Date и создадимDate экземпляр.

Вот функция, которая делает все, что говорится, и возвращает Date экземпляр, который вы можете сравнить с другим Date экземпляром:

function convertToDate(str) {
  // replace '/' with '-'
  str = str.replace(/\//ig, '-');
  
  /**
  * extracting the year, month, day, hours and minutes.
  * the month, day and hours can be 1 or 2 digits(the leading zero is optional).
  * i.e: '4/3/2022 2:18 AM' is the same as '04/03/2022 02:18 AM' => Notice the absence of the leading zero.
  **/
  var y = /\-([\d]{4})/.exec(str)[1],
      m = /\-([\d]{2}|[\d])/.exec(str)[1],
      d = /([\d]{2}|[\d])\-/.exec(str)[1],
      H = /\s([\d]{2}|[\d]):/.exec(str)[1],
      i = /:([\d]{2})/.exec(str)[1],
      AMorPM = /(AM|PM)/.exec(str)[1];
  
  // return a Date instance.
  return new Date(y + '-' + m + '-' + d + ' ' + H + ':' + i + ' ' + AMorPM)
}

// testing...
var str1 = '20/09/2018 12:00 AM';
var str2 = '8/2/2018 9:00 PM'; // leading zero is omitted.
console.log(convertToDate(str1));
console.log(convertToDate(str2));

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

Подробнее о Date.

Надеюсь, я подтолкнул вас дальше.

...