Отметка времени для чтения человеком
Ну, у меня есть странная проблема, когда вы конвертируете из unix timestamp в представление человека с помощью javascript
Вот временная метка
1301090400
Это мой javascript
var date = new Date(timestamp * 1000);
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDay();
var hour = date.getHours();
var minute = date.getMinutes();
var seconds = date.getSeconds();
Я ожидал, что результаты будут 2011 2, 25 22 00 00. Но это 2011, 2, 6, 0, 0, 0
Что я пропустил?
Ответы
Ответ 1
getDay()
возвращает день недели. Чтобы получить дату, используйте date.getDate()
. getMonth()
возвращает месяц, но месяц равен нулю, поэтому использование getMonth()+1
должно дать вам правильный месяц. Значение времени, похоже, здесь хорошо, хотя час здесь 23 (GMT + 1). Если вы хотите универсальные значения, добавьте UTC
к методам (например, date.getUTCFullYear()
, date.getUTCHours()
)
var timestamp = 1301090400,
date = new Date(timestamp * 1000),
datevalues = [
date.getFullYear(),
date.getMonth()+1,
date.getDate(),
date.getHours(),
date.getMinutes(),
date.getSeconds(),
];
alert(datevalues); //=> [2011, 3, 25, 23, 0, 0]
Ответ 2
var newDate = new Date();
newDate.setTime(unixtime*1000);
dateString = newDate.toUTCString();
Где unixtime
- время, возвращаемое вашим sql db. Здесь fiddle, если это помогает.
Например, используя его для текущего времени:
document.write( new Date().toUTCString() );
Ответ 3
Часы, минуты и секунды зависят от часового пояса вашей операционной системы. В GMT (UST) это 22:00:00, но в разных часовых поясах это может быть что угодно. Поэтому добавьте смещение временной зоны к времени создания даты GMT:
var d = new Date();
date = new Date(timestamp*1000 + d.getTimezoneOffset() * 60000)
Ответ 4
здесь kooilnc ответ w/padded 0's
function getFormattedDate() {
var date = new Date();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var min = date.getMinutes();
var sec = date.getSeconds();
month = (month < 10 ? "0" : "") + month;
day = (day < 10 ? "0" : "") + day;
hour = (hour < 10 ? "0" : "") + hour;
min = (min < 10 ? "0" : "") + min;
sec = (sec < 10 ? "0" : "") + sec;
var str = date.getFullYear() + "-" + month + "-" + day + "_" + hour + ":" + min + ":" + sec;
/*alert(str);*/
return str;
}
Ответ 5
используйте Date.prototype.toLocaleTimeString()
как задокументировано здесь
обратите внимание на пример локали en-US в URL-адресе.