Как бы я взять строку в следующем формате:дата форматирования в Javascript
2014-06-12T23:00:00
и отформатировать его в Javascript, чтобы выглядеть следующим образом:
12/06/2014 23:00
Как бы я взять строку в следующем формате:дата форматирования в Javascript
2014-06-12T23:00:00
и отформатировать его в Javascript, чтобы выглядеть следующим образом:
12/06/2014 23:00
Использование Javascript встроенных методов Дата:
function getDateString() {
var d = new Date('2014-06-12T23:00:00'); // pass in your date string
var y = d.getFullYear(); // the full year (4 digits)
var m = d.getMonth() + 1; // 0-based month
var dt = d.getDate() + 1; // 0-based day of the month
dt = dt < 10 ? '0' + dt : dt; // add a preceding 0 to numbers less than 10
var h = d.getHours(); // 0-based hours
h = h < 10 ? '0' + h : h; // add a preceding 0 to numbers less than 10
var mn = d.getMinutes(); // minutes
mn = mn < 10 ? '0' + mn : mn; // add a preceding 0 to numbers less than 10
return m + '/' + dt + '/' + y + ' ' + h + ':' + mn;
}
К сожалению, я просто понял, что не полностью прочитал ваш ответ: ]. С первой строкой даты передайте это в новый объект Date, а затем продолжайте, как я показал: var date = new Date («2014-06-12T23: 00: 00») ;. Обратите внимание, что это даст вам время по Гринвичу, поэтому, например, для тихоокеанского часового пояса, это будет показывать время как GMT-0800, или на 8 часов меньше, чем время, которое решает новый объект даты. Вы можете определить смещение часовой пояс GMT и добавить или вычесть это на свой объект Date, после чего THEN продолжит. –
Пришлось внести несколько незначительных изменений в это (getDate(), а не getDate() + 1 был основным), но он отлично работает, спасибо! – user517406
Удивительный, рад, что я мог бы помочь. Удачи друг другу. –
, как @ Xotic750 poited вне это все о разборе ISO8601 метки:
formatMyDate = function(dt, dayFirst){
var year = dt.getFullYear().toString();
//month starts from zero
var month = (dt.getMonth()+1).toString();
var date = dt.getDate().toString();
var result = null;
if(dayFirst)
result = (date[1]?date:"0"+date[0]) + "/" + (month[1]?month:"0"+month[0]);
else
result = (month[1]?month:"0"+month[0]) + "/" + (date[1]?date:"0"+date[0]);
result += "/" + year + " " + dt.toTimeString().split(" ")[0];
return result;
}
parseUTCTimestamp = function(dtstr) {
var dt = null;
var dtArr = dtstr.split(/[\-T:]/);
dt = new Date(Date.UTC(parseInt(dtArr[0]), dtArr[1]-1, parseInt(dtArr[2]), parseInt(dtArr[3]), parseInt(dtArr[4]), parseInt(dtArr[5])));
return formatMyDate(dt);
};
parseTimestamp = function(dtstr) {
var dt = null;
var dtArr = dtstr.split(/[\-T:]/);
dt = new Date(parseInt(dtArr[0]), dtArr[1]-1, parseInt(dtArr[2]), parseInt(dtArr[3]), parseInt(dtArr[4]), parseInt(dtArr[5]));
return formatMyDate(dt, true);
};
parseUTCTimestamp("2014-06-12T23:00:00");//-->"06/13/2014 03:30:00"
parseTimestamp("2014-06-12T23:00:00");//-->"12/06/2014 23:00:00"
Анализ временной маркировки ISO8601 поддерживается только в новых браузерах, поддерживающих ECMA5, и даже тогда он попадает и промахивается (как и любой синтаксический анализ строки даты и времени). Также метка времени указана в формате UTC не локально. – Xotic750
См. ['Date.UTC'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC) – Xotic750
@ Xotic750: спасибо, что указали это, это круто сейчас? –
В этом случае может быть проще, чтобы избежать Date
объекта в целом и, как предложил @Ismael, использовать прямой манипуляции со строками.
Javascript
var dateStamp = '2014-06-12T23:00:00',
dateTime = dateStamp.split('T'),
date = dateTime[0].split('-'),
time = dateTime[1].split(':'),
formatted = date.reverse().join('/') + ' ' + time.slice(0, -1).join(':');
console.log(formatted);
Выход
12/06/2014 23:00
На jsFiddle
Рассматривали вы используете библиотеку, например: http://momentjs.com/ – Oleg
использовать некоторые подстроки старые-моды метод, быстрый и грязный. – Ismael
Многочисленные ответы здесь на SO http://stackoverflow.com/questions/21516995/create-another-formated-date-string-from-an-iso8601-timestamp – Xotic750