Вот несколько методов преобразования времени в 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