Неверная дата Javascript в формате строки

Я пытаюсь разобрать время, которое извлекается из MySql через jSon

что-то вроде:

new Date('12:15:24').toString('h:mmtt');

но я продолжаю получать недопустимую дату в консоли

Что мне нужно сделать, так это конвертировать 24-часовой формат в 12 часов утра / вечера и наоборот

javascript,date,

0

Ответов: 3


2 принят

Date()Конструктор любит только очень ограниченный набор форматов даты. Если ваш формат ввода исправлен 'hh:mm:ss', возможно, проще отформатировать его, используя простую строку replace:

function formatTime(time) {
  return time.replace(/(d?d)(:dd):(dd)/, function(_, h, m) {
    return (h > 12 ? h-12 : +h === 0 ? "12" : +h) + m + (h >= 12 ? "pm" : "am");
  });
}

console.log( formatTime('00:15:24') );
console.log( formatTime('09:15:24') );
console.log( formatTime('10:15:24') );
console.log( formatTime('11:15:24') );
console.log( formatTime('12:15:24') );
console.log( formatTime('13:15:24') );
console.log( formatTime('14:15:24') );

Дальнейшее чтение:


0

Я бы подумал об использовании библиотеки обработки времени и времени, например http://momentjs.com/ .

Вы также можете достичь того, чего хотите, разделив строку времени и создав объект Date (). Пример:

var time = '12:15:24';
var timePortions = time.split(':');
new Date(0,0,0,timePortions[0], timePortions[1], timePortions[2])

Однако это не безопасный способ манипулировать датой и временем.


0

лучше использовать time.js для обработки datetime, как это

// get hours:minutes:seconds of the date 31-Jan_2016 9.31.21
console.log(moment('2016-01-31 09:30:21').format('HH:mm:ss'))

// get current hours:minutes:seconds
console.log(moment().format('HH:mm:ss')) 

// get current date-month-year hours:minutes:seconds
console.log(moment('2016-01-31 09:30:21').format('DD-MM-YYYY HH:mm:ss')) 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script>

JavaScript, дата,
Похожие вопросы