유닉스 타임 스탬프에서 자바 스크립트를 사용하여 인간 표현으로 변환하는 동안 이상한 문제가 있습니다.
타임 스탬프입니다
1301090400
이것은 내 자바 스크립트입니다
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 내가 놓친 것은 무엇인가?
답변
getDay()
요일을 반환합니다. 날짜를 얻으려면 date.getDate()
. getMonth()
는 월을 검색하지만 월은 0을 기준으로하므로를 사용 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]
답변
답변
여기에 0이 패딩 된 kooilnc의 대답이 있습니다.
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;
}
답변
시간, 분 및 초는 운영 체제의 시간대에 따라 다릅니다. GMT (UST)에서는 22:00:00이지만 다른 시간대에서는 무엇이든 될 수 있습니다. 따라서 시간대 오프셋을 시간에 추가하여 GMT 날짜를 만듭니다.
var d = new Date();
date = new Date(timestamp*1000 + d.getTimezoneOffset() * 60000)