Необходимо учитывать часовой пояс, чтобы определить, какая это дата.Я предполагаю, что первая часть даты - это вывод Date.getTime()
из Java или JavaScript ( т.е. количество миллисекунд с 1 января 1970 года, 00:00:00 UTC).
Для правильного вывода всех значений даты необходимо применить смещение часового пояса ( например, -0500
для восточного стандартного времени) перед созданием объекта Date, а затем использовать методы UTC для получениячасти даты.Причина в том, что JavaScript не предоставляет метод Date.setTimezoneOffset()
для установки часового пояса на правильный (невозможно изменить его из системного часового пояса посетителя).
Пример кода
Воткод, который я придумал.Он использует регулярное выражение для извлечения частей закодированной даты, применяет указанное смещение часового пояса, создает объект Date, а затем строит дату из частей (демонстрация: http://jsfiddle.net/Wa8LY/1/).
var dateParts = data[0].StartDate.match(/\((.*)([+-])(..)(..)\)/);
var dateObj = new Date(
/* timestamp in milliseconds */ Number(dateParts[1]) +
/* sign of timezone offset */ Number(dateParts[2] + '1') *
/* hours and minutes offset */ (36e5 * dateParts[3] + 6e4 * dateParts[4])
);
var dateMMDDYYYY = [dateObj.getUTCMonth() + 1,
dateObj.getUTCDate(),
dateObj.getUTCFullYear()].join('/');
.компоненты
Если вам нужно добавить компоненты даты слева ( например 01/01/0001
), вы можете использовать эту функцию, чтобы помочь сделать это:
function leftPadWithZeroes(str, len) {
return (new Array(len + 1).join('0') + str).slice(-len);
}
И измените последние строки на (демо: http://jsfiddle.net/5tkpV/1/):
var dateMMDDYYYY = [leftPadWithZeroes(dateObj.getUTCMonth() + 1, 2),
leftPadWithZeroes(dateObj.getUTCDate(), 2),
leftPadWithZeroes(dateObj.getUTCFullYear(), 4)].join('/');