사람이 읽을 수있는 형식의 타임 스탬프


89

유닉스 타임 스탬프에서 자바 스크립트를 사용하여 인간 표현으로 변환하는 동안 이상한 문제가 있습니다.

타임 스탬프입니다

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 내가 놓친 것은 무엇인가?



내가 무엇을 동일합니다
georgevich

Firefox Firebug 콘솔에서 이것을 시도하고 예상 한 결과를 얻었습니다. 어떤 브라우저 / OS를 사용하고 있습니까?
andrewmu 2011 년

나는 jsfiddle을 생성하고 잘 작동 것 같다 : jsfiddle.net/9SUqX를 (I 오페라에서 테스트)
제임스 헐스

다음은 내가 얻는 것입니다. img841.imageshack.us/i/screenshot20110324at113.png
georgevich

답변:


101

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]

1
귀하의 날짜와 도움을 제안하지만, 난 여전히 시간, 분, 초에 어떤 문제가 있는지 파악은`t
georgevich

7
@george 당신은 아무것도 놓치지 않습니다. 이러한 값은 정수이므로 "00"과 같은 값을 가질 수 없습니다. 당신은 예를 들어 쉽게 자신을 추가 할 수 있습니다minute = (minute < 10 ? "0" : "") + minute;
그림자 마법사가 당신을 위해 귀입니다

@georgevich : 당신은 어떤 시간대에 있습니까? 사용하면 date.getUTCHours()어떻게 되나요?
KooiInc 2011 년

1
GMT + 2 date.getUTCHours ()의 결과는 19
georgevich 2011 년

GMT + 2이므로 22 시간 표준시 = 0 시간입니다. UTC 값을 사용하는 jsfiddle은 다음과 같습니다. jsfiddle.net/EZFG9 .
KooiInc 2011 년

48
var newDate = new Date();
newDate.setTime(unixtime*1000);
dateString = newDate.toUTCString();

unixtimeSQL DB에서 반환하는 시간은 어디에 있습니까 ? 도움이된다면 여기에 바이올린 이 있습니다.

예를 들어, 현재 시간에 사용 :

document.write( new Date().toUTCString() );


나는이 대답하고, 여기에 허용 anwer을 발견 [*로 .toString ()] 유용하게 : stackoverflow.com/questions/13622142/... 여기에 요지는 다음과 같습니다 gist.github.com/victoriastuart/b9fb09b890ef88755538b24b0207fece
빅토리아 스튜어트

1
"unixtime is undefined"내가 여기서 얻는 것입니다
Katie

1
어쨌든, 쉽게 oneliner으로 설정할 수 있습니다new Date(1480966325 * 1000).toUTCString()
Rozkalns

9

여기에 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;
}

7

시간, 분 및 초는 운영 체제의 시간대에 따라 다릅니다. GMT (UST)에서는 22:00:00이지만 다른 시간대에서는 무엇이든 될 수 있습니다. 따라서 시간대 오프셋을 시간에 추가하여 GMT 날짜를 만듭니다.

var d = new Date();
date = new Date(timestamp*1000 + d.getTimezoneOffset() * 60000)

타임 스탬프 시간이 1000 인 이유는 무엇입니까?
Bruno Gomes 2015 년

2
@BrunoGomes는 타임 스탬프가 초 단위라고 가정하고 자바 스크립트는 밀리 초 단위로 처리합니다.
Brent

7

여기에Date.prototype.toLocaleTimeString() 설명 된대로 사용

URL의 로케일 예제 en-US를 참고하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.