Если вы можете выбрать тот формат друг от друга, или получить стандартный формат JavaScript можно разобрать - вы можете преобразуйте его в объект Date
. Я не вижу смещения на эту дату, что является проблематичным, когда JavaScript пытается его проанализировать. Если предположить, что все, что есть, мы можем заставить дату UTC со следующим ...
// ------- new Date(Date.UTC(year, month, day, hour, minute, second))
var date = new Date(Date.UTC(2015, 9, 16, 21, 43, 0));
console.log(date) // Fri Oct 16 2015 15:43:00 GMT-0600 (Mountain Daylight Time (Mexico))
- отмечают, что
month
в Date.UTC
равна нулю на основе, например, Октябрь будет 9
new Date(value)
бы сделать это для нас автоматически, если формат правильно - где value
фактическое значение даты вы получаете - но этот формат не будет разбирать, как есть. Если в этом формате нет способа, вы можете манипулировать им для работы в приведенном выше примере. Вот непроверенных алгоритм для примера ...
var formatted = '9:43pm 16/10/2015'
function createDateUTC(formatted) {
var hourOffset = formatted.split(' ')[0].split(':')[1].match(/[a-zA-Z]+/g)[0] === 'pm' ? 12 : 0
var year = parseInt(formatted.split('/').pop());
var month = parseInt(formatted.split('/')[1]) - 1;
var day = parseInt(formatted.split('/')[0].split(' ').pop());
var hour = hourOffset + parseInt(formatted.split(' ')[0].split(':')[0]);
var minute = parseInt(formatted.split(' ')[0].split(':')[1]);
return new Date(Date.UTC(year, month, day, hour, minute, 0));
}
var myDate = createDateUTC(formatted);
JSFiddle Link - рабочая демо
Отъезд UTC() и Date Object документы для получения дополнительной информации
Кроме того, чтобы получить точный формат, который вы хотите, мы можем ввести еще несколько функций, которые предоставят нам 12:00pm 16/10/2015
формат
function formatAMPM(date) {
var hours = date.getHours();
var minutes = date.getMinutes();
var ampm = hours >= 12 ? 'pm' : 'am';
hours = hours % 12;
hours = hours ? hours : 12; // the hour '0' should be '12'
minutes = minutes < 10 ? '0'+minutes : minutes;
var strTime = hours + ':' + minutes + '' + ampm;
return strTime;
}
function formatMMDDYYYY(inputFormat) {
function pad(s) { return (s < 10) ? '0' + s : s; }
var d = new Date(inputFormat);
return [pad(d.getDate()), pad(d.getMonth()+1), d.getFullYear()].join('/');
}
console.log(formatAMPM(myDate) + ' ' + formatMMDDYYYY(myDate));
// Mountain Daylight Time => -- 3:43pm 16/10/2015
JSFiddle Link - отформатирован пример
Я reccoment глядя в Moment.js, если вы планируете делать тяжелую форматирование даты и манипуляции.
В целом - лучшее решение для этого было бы вернуть приемлемый формат с сервера, разрешить его к местному времени изначально, например, new Date()
, и используйте надежную библиотеку форматирования, а не свою собственную, чтобы отображать ее, как вы пожелаете.
Вы можете использовать moment.js? –
в том, что отправлен фактический формат? Вы контролируете источник api? – charlietfl
@charlietfl да это фактический формат времени, отправленный с php –