Конвертировать XML-дату и время, используя JavaScript
Я вытаскиваю некоторую информацию из стоковой ленты. отметка времени для последнего обновления выглядит следующим образом:
2016-02-10 13:32:41
Как мне отформатировать его так:
1:32:41pm
2/10/2016
Вот мое объявление переменной:
time = x[0].getElementsByTagName("LASTDATETIME")[0].childNodes[0].nodeValue;
2 ответа
Решение
Нет необходимости создавать Date, вы можете просто разобрать и переформатировать строку. В любом случае вы должны разобрать строку, переформатирование без даты просто более эффективно.
// 2016-02-10 13:32:41 => m/dd/yyyy h:mm:ssap
function reformatDateString(s) {
var b = s.split(/\D/);
var ap = b[3] < 12? 'am':'pm';
var h = b[3]%12 || 12;
return h + ':' + b[4] + ':' + b[5] + ap +
'\n' + +b[1] + '/' + b[2] + '/' + b[0];
}
document.write(reformatDateString('2016-02-10 13:32:41').replace('\n','<br>'))
document.write('<br>');
document.write(reformatDateString('2016-12-09 03:02:09').replace('\n','<br>'))
Вы можете превратить строку в допустимую дату Ja vaScript, а затем использовать методы даты, чтобы отобразить ее так, как вы хотите. Например, чтобы превратить его в дату Ja vaScript, разбить его на части и затем собрать.
var dateAndtime = x[0].getElementsByTagName("LASTDATETIME")[0].childNodes[0].nodeValue;
var date = dateAndtime.split(' ')[0];
var time = dateAndtime.split(' ')[1];
var year = date.split('-')[0];
var month = date.split('-')[1]-1;
var day = date.split('-')[2];
var hour = time.split(':')[0];
var minute = time.split(':')[1];
var second = time.split(':')[2];
var d = new Date(year, month, day, hour, minute, second);