Преобразование 12-часового формата в 24-часовой формат в JS - PullRequest
0 голосов
/ 14 мая 2018

Я хочу преобразовать строковую дату в этом формате «25.03.2008 11:51:46 PM» в 24-часовой формат, например, «10/05/2018 в 08:51:46» (французский формат)

Когда я вставляю даты такого типа "25.03.2008 11:51:46" Я получаю это "05.10.2008 в 08:51:46"

Этомой текущий код:

String.prototype.toDate = function(format) {
  var normalized = this.replace(/[^a-zA-Z0-9]/g, '-');
  var normalizedFormat = format.toLowerCase().replace(/[^a-zA-Z0-9]/g, '-');
  var formatItems = `enter code here`
  normalizedFormat.split('-');
  var dateItems = normalized.split('-');

  var monthIndex = formatItems.indexOf("mm");
  var dayIndex = formatItems.indexOf("dd");
  var yearIndex = formatItems.indexOf("yyyy");
  var hourIndex = formatItems.indexOf("hh");
  var minutesIndex = formatItems.indexOf("ii");
  var secondsIndex = formatItems.indexOf("ss");

  var today = new Date();

  var year = yearIndex > -1 ? dateItems[yearIndex] : today.getFullYear();
  var month = monthIndex > -1 ? dateItems[monthIndex] - 1 : today.getMonth() - 1;
  var day = dayIndex > -1 ? dateItems[dayIndex] : today.getDate();

  var hour = hourIndex > -1 ? dateItems[hourIndex] : today.getHours();
  var minute = minutesIndex > -1 ? dateItems[minutesIndex] : today.getMinutes();
  var second = secondsIndex > -1 ? dateItems[secondsIndex] : today.getSeconds();

  if ((this.split(" ")[2] == "PM") && hour < 12) {
    hour = hour + 12;
  } else if ((this.split(" ")[2] == "AM") && hour == 12) {
    hour = hour - 12;
  }

  console.log(year + " " + month + " " + day + " " + hour + " " + minute + " " + second);
  return new Date(year, month, day, hour, minute, second);
};

logd = "3/25/2018 11:51:46 PM".toDate("mm/dd/yyyy hh:ii:ss");
console.log(logd.toLocaleString());

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Не уверен, почему все хотят использовать библиотеку, почему бы просто не использовать смесь toLocaleDateString и toLocaleTimeString:

var options = { hour12: false };
var date  = new Date("3/25/2018 11:51:46 PM");
console.log(`${date.toLocaleDateString("fr-FR")} ${date.toLocaleTimeString("fr-FR", options)}`);

// or just use toLocaleString:

console.log(date.toLocaleString("fr-FR", options));
0 голосов
/ 14 мая 2018

Используйте Moment.JS, мощный инструмент для проекта, основанного на дате и времени:

https://momentjs.com/

Вы можете найти данные ниже своего варианта использования и несколько примеров

console.log(moment().format('DD/MM/YYYY [at] HH:mm:ss'))
console.log(moment().format('MMMM Do YYYY, h:mm:ss a'));
console.log(moment().format('dddd'));
console.log(moment().format("MMM Do YY"));
console.log(moment().format('YYYY [escaped] YYYY'));
console.log(moment().format());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment-with-locales.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...