Методы преобразования времени в JavaScript: примеры кода и решения

Вот несколько методов преобразования времени в JavaScript, а также примеры кода:

Метод 1. Использование объекта Date и манипуляций со строками

function convertTimeAMPMTo24Hour(time) {
  var timeArray = time.split(':');
  var hours = parseInt(timeArray[0]);
  var minutes = parseInt(timeArray[1].substring(0, 2));
  var meridiem = timeArray[1].substring(2).toUpperCase();

  if (meridiem === 'PM' && hours !== 12) {
    hours += 12;
  } else if (meridiem === 'AM' && hours === 12) {
    hours = 0;
  }

  return ('0' + hours).slice(-2) + ':' + ('0' + minutes).slice(-2);
}
console.log(convertTimeAMPMTo24Hour('12:30PM')); // Output: 12:30
console.log(convertTimeAMPMTo24Hour('09:45AM')); // Output: 09:45

Метод 2: использование объекта Intl.DateTimeFormat

function convertTimeAMPMTo24Hour(time) {
  var [hours, minutes, meridiem] = time.split(/:|(?=[APM])/);
  var dateString = new Date().toLocaleDateString('en-US', {
    hour: 'numeric',
    minute: 'numeric',
    hour12: true
  });
  var dateTime = new Date(`1/1/1970 ${hours}:${minutes} ${meridiem}`);
  var convertedTime = dateTime.toLocaleTimeString('en-US', {
    hour: '2-digit',
    minute: '2-digit'
  });

  return convertedTime;
}
console.log(convertTimeAMPMTo24Hour('12:30PM')); // Output: 12:30
console.log(convertTimeAMPMTo24Hour('09:45AM')); // Output: 09:45

Метод 3. Использование регулярных выражений

function convertTimeAMPMTo24Hour(time) {
  var regex = /^(\d{1,2}):(\d{2})([AP]M)$/;
  var match = time.match(regex);
  if (!match) {
    return 'Invalid time format';
  }
  var hours = parseInt(match[1]);
  var minutes = parseInt(match[2]);
  var meridiem = match[3];

  if (meridiem === 'PM' && hours !== 12) {
    hours += 12;
  } else if (meridiem === 'AM' && hours === 12) {
    hours = 0;
  }

  return ('0' + hours).slice(-2) + ':' + ('0' + minutes).slice(-2);
}
console.log(convertTimeAMPMTo24Hour('12:30PM')); // Output: 12:30
console.log(convertTimeAMPMTo24Hour('09:45AM')); // Output: 09:45

Метод 4. Использование библиотеки moment.js (требуется внешняя библиотека)

// Make sure to include the moment.js library in your HTML file
function convertTimeAMPMTo24Hour(time) {
  var dateTime = moment(time, 'hh:mmA');
  return dateTime.format('HH:mm');
}
console.log(convertTimeAMPMTo24Hour('12:30PM')); // Output: 12:30
console.log(convertTimeAMPMTo24Hour('09:45AM')); // Output: 09:45