[javascript] JavaScript에서 타임 스탬프를 어떻게 얻습니까?

JavaScript에서 타임 스탬프를 얻으려면 어떻게해야합니까?

유닉스 타임 스탬프 와 비슷한 것 , 즉 현재 시간과 날짜를 나타내는 단일 숫자. 숫자 또는 문자열 중 하나입니다.



답변

짧고 멋진 :

+ new Date()

단항 연산자 는 객체 plusvalueOf메서드를 트리거 Date하고 타임 스탬프를 변경없이 반환합니다.

세부:

거의 모든 현재 브라우저 Date.now()에서 UTC 타임 스탬프를 밀리 초 단위 로 가져 오는 데 사용할 수 있습니다 . 이에 대한 예외는 IE8 및 이전 버전입니다 ( 호환성 표 참조 ).

그래도 쉽게 shim을 만들 수 있습니다.

if (!Date.now) {
    Date.now = function() { return new Date().getTime(); }
}

타임 스탬프를 초 단위로 얻으려면 다음을 사용할 수 있습니다.

Math.floor(Date.now() / 1000)

또는 다음을 사용할 수 있습니다.

Date.now() / 1000 | 0

어느 것이 더 빠르지 만 읽기 쉽지 않습니다 ( 이 답변참조하십시오 ).

Date.now()(호환성 심 포함)을 사용하는 것이 좋습니다 . 더 짧고 새 Date객체를 만들지 않기 때문에 약간 좋습니다 . 그러나 shim 및 최대 호환성을 원하지 않는 경우 “old”방법을 사용하여 밀리 초 단위 의 타임 스탬프를 얻을 수 있습니다 .

new Date().getTime()

그런 다음 다음과 같이 초로 변환 할 수 있습니다.

Math.round(new Date().getTime()/1000)

그리고 valueOf위에서 보여준 방법을 사용할 수도 있습니다 .

new Date().valueOf()

밀리 초 단위의 타임 스탬프

var timeStampInMs = window.performance && window.performance.now && window.performance.timing && window.performance.timing.navigationStart ? window.performance.now() + window.performance.timing.navigationStart : Date.now();

console.log(timeStampInMs, Date.now());


답변

작기 때문에 이것을 좋아합니다.

+new Date

나는 또한 짧고 현대적인 브라우저와 호환되며 500 명 이상이 더 낫다고 투표했기 때문에 이것을 좋아합니다.

Date.now()


답변

신기원 이후 자바 스크립트는 밀리 초 단위로 작동하지만 다른 대부분의 언어는 초 단위로 작동합니다. 밀리 초로 작업 할 수 있지만 PHP라고하는 값을 전달하면 PHP 기본 기능이 실패 할 수 있습니다. 따라서 항상 밀리 초가 아닌 초를 사용해야합니다.

그러면 Unix 타임 스탬프 (초)가 표시됩니다.

var unix = Math.round(+new Date()/1000);

이것은 신기원 이후의 밀리 초 (유닉스 타임 스탬프 아님)를 제공합니다.

var milliseconds = new Date().getTime();


답변

var time = Date.now || function() {
  return +new Date;
};

time();


답변

이 답변에 설명이 포함 된 여러 솔루션을 제공합니다.
PS 가 확실치 않은 것이 있으면 언제든지 질문하십시오 .


빠르고 더러운 솔루션 :

Date.now() /1000 |0

경고 :이 2,038에서 휴식과 당신이 할 경우 음수를 반환 |0마법을. Math.floor()그때까지 대신 사용하십시오

Math.floor() 해결책:

Math.floor(Date.now() /1000);

Derek의 일부 nerdy 대안은 이 답변 아래의 의견에서 발췌했습니다.

new Date/1e3|0

Date.now()작업 을위한 폴리 필 :

IE에서 작동하게하려면 다음을 수행하십시오 ( MDN의 폴리 필 ).

if (!Date.now) {
    Date.now = function now() {
        return new Date().getTime();
    };
}

연도 / 요일 / 일광 절약 시간에 신경 쓰지 않으면 2038 년 후에 제거하고 사용할 수 있습니다.

var now = (function () {
    var year = new Date(new Date().getFullYear().toString()).getTime();
    return function () {
        return Date.now() - year
    }
})();

어떻게 보일지에 대한 결과 :

new Date()
Thu Oct 29 2015 08:46:30 GMT+0100 (Mitteleuropäische Zeit )
new Date(now())
Thu Oct 29 1970 09:46:30 GMT+0100 (Mitteleuropäische Zeit )

물론 일광 절약 시간이 중단되지만 int32가 2038 년에 중단 된 후 타임 스탬프에서 이진 연산을 수행 해야하는 경우 빌드하는 내용에 따라 유용 할 수 있습니다.

또한 음수 값을 반환하지만 코드를 실행하는 PC 사용자가 PC 시계를 전년 12 월 31 일로 변경 한 경우에만 음수 값을 반환합니다.


코드가 처음 실행될 때부터 상대 시간을 알고 싶다면 다음과 같이 사용할 수 있습니다.

var relativeTime = (function () {
    var start = Date.now();
    return function () {
        return Date.now() - start
    }
})();

jQuery를 사용하는 경우 내부적으로 동일한 기능을 수행하기 때문에 폴리 필을 더 이상 사용 하지 않는 jQuery의 문서에$.now() 설명 된대로 사용할 수 있습니다 .$.now()(new Date).getTime()

jQuery 버전에 만족한다면 답변을 직접 찾지 못했습니다.


이제 무엇에 대한 작은 설명 |0이 있습니다.

을 제공 |하면 인터프리터에게 이진 OR 연산을 수행하도록 지시합니다. 비트 연산에는 10 진수 결과를 Date.now() / 1000정수로 변환하는 절대 숫자가 필요 합니다.

해당 변환 중에 소수는 제거 Math.floor()되므로 코드 를 사용 하지만 코드 를 사용하는 것과 동일한 결과가 발생 합니다.

경고 : 64 비트 double을 32 비트 정수로 변환합니다. 이로 인해 많은 수를 처리 할 때 정보가 손실 될 수 있습니다. 32 비트 정수 오버플로로 인해 2038 이후 타임 스탬프가 중단됩니다.


자세한 내용은 Date.now다음 링크를 참조하십시오 : Date.now()@ MDN


답변

var timestamp = Number(new Date()); // current time as number


답변

jQuery 는 타임 스탬프를 얻는 고유 한 방법 을 제공합니다 .

var timestamp = $.now();

(그냥 (new Date).getTime()표현을 구현 하는 것 외에도 )

REF : http://api.jquery.com/jQuery.now/