etc./StackOverFlow

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

청렴결백한 만능 재주꾼 2021. 9. 28. 00:13
반응형

질문자 :pupeno


Unix의 타임스탬프와 유사한 것으로 현재 시간과 날짜를 나타내는 단일 숫자입니다. 숫자 또는 문자열로.



답변자 : daveb


짧고 멋진:

 + new Date()

plus 와 같은 단항 연산자 Date 객체의 valueOf 메서드를 트리거하고 타임스탬프를 반환합니다(변경 없이).

세부:

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

하지만 이를 위해 쉽게 심을 만들 수 있습니다.

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

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

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

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

 Date.now() / 1000 | 0

약간 더 빨라야 하지만 가독성도 떨어집니다.
(또한 이 대답을 참조 하거나 비트 연산자에 더 explaination과를).

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

 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());



답변자 : xer0x


나는 이것이 작기 때문에 이것을 좋아한다.

 +new Date

나는 또한 이것이 짧고 최신 브라우저와 호환되며 500명이 넘는 사람들이 더 낫다고 투표했기 때문에 이것을 좋아합니다.

 Date.now()


답변자 : Daithí


JavaScript는 epoch 이후의 밀리초 수로 작동하는 반면 대부분의 다른 언어는 초 단위로 작동합니다. 밀리초 단위로 작업할 수 있지만 PHP라는 값을 전달하는 즉시 PHP 기본 기능이 실패할 수 있습니다. 따라서 항상 밀리초가 아닌 초를 사용합니다.

이렇게 하면 Unix 타임스탬프(초)가 표시됩니다.

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

이것은 Epoch 이후 밀리초를 제공합니다(Unix 타임스탬프가 아님).

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


답변자 : Staale


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


답변자 : GottZ


이 답변에 설명과 함께 여러 솔루션을 제공합니다. 불분명한 것이 있으면 언제든지 질문하십시오


빠르고 더러운 솔루션:

 Date.now() /1000 |0

경고 : 2038 년 중단하고 당신이 할 경우 음수를 반환 할 수 있습니다 |0 마법을. 그 시간까지 Math.floor() 대신 사용하십시오.

Math.floor() 솔루션:

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

이 답변 아래의 의견에서 가져온 Derek 朕會功夫의 일부 괴상한 대안:

 new Date/1e3|0

Date.now Date.now() 작동하도록 Polyfill:

IE에서 작동하게 하려면 다음을 수행할 수 있습니다( MDN의 Polyfill).

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

연도/요일/일광 절약 시간에 대해 신경 쓰지 않는다면 2038년 이후 날짜에 대해 이것을 기억해야 합니다.

비트 연산은 64비트 부동 소수점 대신 32비트 정수를 사용합니다.

다음과 같이 적절하게 사용해야 합니다.

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

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

 const relativeTime = (() => { const start = Date.now(); return () => Date.now() - start; })();

jQuery를 사용하는 경우 $.now() $.now() 내부적으로 동일한 작업을 수행하므로 jQuery의 문서에 설명된 대로 (new Date).getTime()

jQuery 버전에 만족한다면 내가 직접 찾지 못했기 때문에 이 답변에 찬성하는 것을 고려하십시오.


|0 이 하는 일에 대한 간단한 설명:

제공함으로써 | , 인터프리터에게 이진 OR 연산을 수행하도록 지시합니다.
Date.now() / 1000 의 10진수 결과를 정수로 바꾸는 절대 숫자가 필요합니다.

변환하는 동안 소수가 제거되어 Math.floor() 사용하여 출력하는 것과 유사한 결과가 나타납니다.

하지만 경고: 64비트 double을 32비트 정수로 변환합니다.
이것은 엄청난 수를 다룰 때 정보 손실을 초래할 것입니다.
타임스탬프는 Javascript가 Strict 모드에서 64비트 정수로 이동하지 않는 한 32비트 정수 오버플로로 인해 2038년 이후에 중단됩니다.


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



답변자 : aemkei


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


답변자 : VisioN


jQuery 는 타임스탬프를 가져오는 자체 메서드 를 제공합니다.

 var timestamp = $.now();

(new Date).getTime() 표현식을 구현하는 것 외에)

참조 : http://api.jquery.com/jQuery.now/



답변자 : Joaquinglezsantos


다른 옵션 외에도 날짜 형식 ISO를 원하는 경우 직접 가져올 수 있습니다.

 console.log(new Date().toISOString());



답변자 : Tom Viner


console.log(new Date().valueOf()); // returns the number of milliseconds since the epoch



답변자 : Alireza


Date , JavaScript의 기본 객체 는 시간에 대한 모든 데이터를 얻는 방법입니다.

JavaScript에서 타임 스탬프는 클라이언트 컴퓨터 세트에 따라 다르므로 100% 정확한 타임 스탬프가 아니라는 점에 주의하십시오. 최상의 결과를 얻으려면 서버 측 에서 타임스탬프를 가져와야 합니다.

어쨌든, 내가 선호하는 방법은 바닐라를 사용하는 것입니다. 이것은 JavaScript에서 수행하는 일반적인 방법입니다.

 Date.now(); //return 1495255666921

MDN에서는 아래와 같이 언급됩니다.

Date.now() 메서드는 1970년 1월 1일 00:00:00 UTC 이후 경과된 밀리초 수를 반환합니다.
now()는 Date의 정적 메서드이기 때문에 항상 Date.now()로 사용합니다.

ES5 미만 버전을 사용하는 경우 Date.now(); 작동하지 않으며 다음을 사용해야 합니다.

 new Date().getTime();


답변자 : live-love


더하기 위해 Javascript에서 타임 스탬프 문자열을 반환하는 함수가 있습니다. 예: 오후 15:06:38

 function displayTime() { var str = ""; var currentTime = new Date() var hours = currentTime.getHours() var minutes = currentTime.getMinutes() var seconds = currentTime.getSeconds() if (minutes < 10) { minutes = "0" + minutes } if (seconds < 10) { seconds = "0" + seconds } str += hours + ":" + minutes + ":" + seconds + " "; if(hours > 11){ str += "PM" } else { str += "AM" } return str; }


답변자 : Kamil Kiełczewski


성능

오늘 - 2020.04.23 선택한 솔루션에 대한 테스트를 수행합니다. Chrome 81.0, Safari 13.1, Firefox 75.0의 MacOs High Sierra 10.13.6에서 테스트했습니다.

결론

  • Solution Date.now() (E)는 Chrome 및 Safari에서 가장 빠르고 Firefox에서는 두 번째로 빠르며 빠른 브라우저 간 솔루션을 위한 최선의 선택일 것입니다.
  • Solution performance.now() (G)는 놀랍게도 Firefox의 다른 솔루션보다 100배 이상 빠르지만 Chrome에서는 가장 느립니다.
  • 솔루션 C, D, F는 모든 브라우저에서 매우 느립니다.

여기에 이미지 설명 입력

세부

크롬에 대한 결과

여기에 이미지 설명 입력

여기 에서 컴퓨터에서 테스트를 수행할 수 있습니다.

테스트에 사용된 코드는 아래 스니펫에 나와 있습니다.

 function A() { return new Date().getTime(); } function B() { return new Date().valueOf(); } function C() { return +new Date(); } function D() { return new Date()*1; } function E() { return Date.now(); } function F() { return Number(new Date()); } function G() { // this solution returns time counted from loading the page. // (and on Chrome it gives better precission) return performance.now(); } // TEST log = (n,f) => console.log(`${n} : ${f()}`); log('A',A); log('B',B); log('C',C); log('D',D); log('E',E); log('F',F); log('G',G);
 This snippet only presents code used in external benchmark



답변자 : Belldandu


아직 보지 못한 1인

 Math.floor(Date.now() / 1000); // current time in seconds

내가 아직 보지 못한 또 다른 하나는

 var _ = require('lodash'); // from here https://lodash.com/docs#now _.now();


답변자 : Salman A


Date.getTime() 메서드를 사용할 수 있습니다.

getTime 메서드에서 반환된 값은 1970년 1월 1일 00:00:00 UTC 이후의 밀리초 수입니다.

유닉스 타임 스탬프 얻기 위해 1000 결과를 나누기 floor 필요한 경우 :

 (new Date).getTime() / 1000

Date.valueOf() Date.getTime() 과 기능적으로 동일하므로 날짜 객체에 산술 연산자를 사용하여 동일한 결과를 얻을 수 있습니다. 제 생각에는 이 접근 방식이 가독성에 영향을 미칩니다.



답변자 : Valentin Podkamennyi


Math.floor(new Date().getTime() / 1000)new Date / 1E3 | 0 .

getTime() 호출을 건너뛰고 | 0Math.floor() 함수를 대체합니다. 1E3 1000 대해 더 짧다는 것을 기억하는 것도 좋습니다 1E3 을 상수로 나타내기 위해 대문자 E가 소문자보다 선호됨).

결과적으로 다음을 얻습니다.

 var ts = new Date / 1E3 | 0; console.log(ts);



답변자 : FullStack


moment.js 사용하는 것이 좋습니다. UNIX epoch 이후의 밀리초 수를 얻으려면 다음을 수행하십시오.

 moment().valueOf()

UNIX epoch 이후의 초 수를 얻으려면 다음을 수행하십시오.

 moment().unix()

다음과 같이 시간을 변환할 수도 있습니다.

 moment('2015-07-12 14:59:23', 'YYYY-MM-DD HH:mm:ss').valueOf()

나는 항상 그렇게 해요. 말장난이 없습니다.

브라우저에서 moment.js 를 사용하려면:

 <script src="moment.js"></script> <script> moment().valueOf(); </script>

MomentJS를 설치하고 사용하는 다른 방법을 포함한 자세한 내용은 해당 문서를 참조하세요.



답변자 : iter


마이크로초 해상도의 타임스탬프의 경우 performance.now .

 function time() { return performance.now() + performance.timing.navigationStart; }

이것은 예를 들어 1436140826653.139 를 생성할 수 있지만 Date.now 1436140826653 만 제공합니다.



답변자 : Jitendra Pawar


만 사용할 수 있습니다.

 var timestamp = new Date().getTime(); console.log(timestamp);

현재 타임 스탬프를 가져옵니다. 추가 작업을 수행할 필요가 없습니다.



답변자 : deepakssn


다음은 mm/dd/yy hh:mi:ss 형식으로 타임스탬프를 생성하는 간단한 함수입니다.

 function getTimeStamp() { var now = new Date(); return ((now.getMonth() + 1) + '/' + (now.getDate()) + '/' + now.getFullYear() + " " + now.getHours() + ':' + ((now.getMinutes() < 10) ? ("0" + now.getMinutes()) : (now.getMinutes())) + ':' + ((now.getSeconds() < 10) ? ("0" + now.getSeconds()) : (now.getSeconds()))); }


답변자 : blueberry0xff


 // The Current Unix Timestamp // 1443534720 seconds since Jan 01 1970. (UTC) // seconds console.log(Math.floor(new Date().valueOf() / 1000)); // 1443534720 console.log(Math.floor(Date.now() / 1000)); // 1443534720 console.log(Math.floor(new Date().getTime() / 1000)); // 1443534720 // milliseconds console.log(Math.floor(new Date().valueOf())); // 1443534720087 console.log(Math.floor(Date.now())); // 1443534720087 console.log(Math.floor(new Date().getTime())); // 1443534720087 // jQuery // seconds console.log(Math.floor($.now() / 1000)); // 1443534720 // milliseconds console.log($.now()); // 1443534720087
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>



답변자 : cenkarioz


로깅 목적이라면 ISOString을 사용할 수 있습니다.

new Date().toISOString()

"2019-05-18T20:02:36.694Z"



답변자 : mr.boyfox


Date.now를 지원하지 않는 모든 브라우저에서 현재 날짜 시간을 가져오는 데 사용할 수 있습니다.

 currentTime = Date.now() || +new Date()


답변자 : Ronnie Royston


이것은 효과가 있는 것 같습니다.

 console.log(clock.now); // returns 1444356078076 console.log(clock.format(clock.now)); //returns 10/8/2015 21:02:16 console.log(clock.format(clock.now + clock.add(10, 'minutes'))); //returns 10/8/2015 21:08:18 var clock = { now:Date.now(), add:function (qty, units) { switch(units.toLowerCase()) { case 'weeks' : val = qty * 1000 * 60 * 60 * 24 * 7; break; case 'days' : val = qty * 1000 * 60 * 60 * 24; break; case 'hours' : val = qty * 1000 * 60 * 60; break; case 'minutes' : val = qty * 1000 * 60; break; case 'seconds' : val = qty * 1000; break; default : val = undefined; break; } return val; }, format:function (timestamp){ var date = new Date(timestamp); var year = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); var hours = date.getHours(); var minutes = "0" + date.getMinutes(); var seconds = "0" + date.getSeconds(); // Will display time in xx/xx/xxxx 00:00:00 format return formattedTime = month + '/' + day + '/' + year + ' ' + hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2); } };


답변자 : Anoop P S


이것은 솔루션을 가지고 있습니다 : js에서 unixtime 스탬프를 tim으로 변환합니다.

 var a = new Date(UNIX_timestamp*1000); var hour = a.getUTCHours(); var min = a.getUTCMinutes(); var sec = a.getUTCSeconds();


답변자 : georgez


요전에 JQuery Cookie 의 소스 코드에서 주어진 Date 객체를 Unix 타임스탬프로 변환하는 정말 멋진 방법을 배웠습니다.

다음은 예입니다.

 var date = new Date(); var timestamp = +date;


답변자 : Kevin Leary


Node.js에서 타임스탬프를 생성하는 기본적인 방법을 원하면 잘 작동합니다.

 var time = process.hrtime(); var timestamp = Math.round( time[ 0 ] * 1e3 + time[ 1 ] / 1e6 );

우리 팀은 이것을 사용하여 localhost 환경에서 캐시를 파괴합니다. 출력은 /dist/css/global.css?v=245521377 여기서 245521377 hrtime() 의해 생성된 타임스탬프입니다.

이것이 도움이 되기를 바랍니다. 위의 방법도 작동할 수 있지만 Node.js에서 우리의 요구에 가장 간단한 접근 방식이라는 것을 알았습니다.



답변자 : Muhammad Reda


lodash밑줄 사용자의 경우 _.now 사용하십시오.

 var timestamp = _.now(); // in milliseconds


답변자 : Rimian


Moment.js 는 Javascript 날짜를 처리하는 데 따른 많은 고통을 추상화할 수 있습니다.

참조: http://momentjs.com/docs/#/displaying/unix-timestamp/

 moment().unix();


답변자 : Olemak


이 글을 쓰는 시점에서 최상위 답변은 9년이었으며 그 이후로 많은 것이 변경되었습니다. 특히 비해키 솔루션에 대한 거의 보편적인 지원이 있습니다.

 Date.now()

이것이 고대(ie9 이전) 브라우저에서 깨지지 않는다는 것을 절대적으로 확신하려면 다음과 같이 체크 뒤에 넣을 수 있습니다.

 const currentTimestamp = (!Date.now ? +new Date() : Date.now());

이것은 물론 초가 아니라 에포크 시간 이후의 밀리초를 반환합니다.

Date.now의 MDN 문서



답변자 : Vicky Gonsalves


더 간단한 방법:

 var timeStamp=event.timestamp || new Date().getTime();


출처 : Here


출처 : http:www.stackoverflow.com/questions/221294/how-do-you-get-a-timestamp-in-javascript">

반응형