JavaScript에서 타임 스탬프를 얻으려면 어떻게해야합니까?
유닉스 타임 스탬프 와 비슷한 것 , 즉 현재 시간과 날짜를 나타내는 단일 숫자. 숫자 또는 문자열 중 하나입니다.
JavaScript에서 타임 스탬프를 얻으려면 어떻게해야합니까?
유닉스 타임 스탬프 와 비슷한 것 , 즉 현재 시간과 날짜를 나타내는 단일 숫자. 숫자 또는 문자열 중 하나입니다.
답변:
+ new Date()
단항 연산자 는 객체 plus
의 valueOf
메서드를 트리거 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());
~~(Date.now() / 1000)
Date.now()
+new Data
영리 하지만 다른 개발자는 읽을 수 없습니다. Date.now()
더 명확하고 다른 사람들이 무슨 일이 일어나고 있는지 알 수 있습니다.
작기 때문에 이것을 좋아합니다.
+new Date
나는 또한 짧고 현대적인 브라우저와 호환되며 500 명 이상이 더 낫다고 투표했기 때문에 이것을 좋아합니다.
Date.now()
new Date().getTime()
. 운 좋게도 빠른 솔루션은 이미 읽기 쉬운 솔루션입니다!
new Date().toString()
호출됩니다.
+
운영자가 문자열처럼 보이게하기 위해 무엇을하고 있습니까?
신기원 이후 자바 스크립트는 밀리 초 단위로 작동하지만 다른 대부분의 언어는 초 단위로 작동합니다. 밀리 초로 작업 할 수 있지만 PHP라고하는 값을 전달하면 PHP 기본 기능이 실패 할 수 있습니다. 따라서 항상 밀리 초가 아닌 초를 사용해야합니다.
그러면 Unix 타임 스탬프 (초)가 표시됩니다.
var unix = Math.round(+new Date()/1000);
이것은 신기원 이후의 밀리 초 (유닉스 타임 스탬프 아님)를 제공합니다.
var milliseconds = new Date().getTime();
Unix timestamp
대 Seconds since the Epoch
. 이 두 사람이 같은 것을 의미하지 않습니까?
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
Date.now()
참조 : developer.mozilla.org/en-US/docs/JavaScript/Reference/…
new Date/1e3|0
.
jQuery 는 타임 스탬프를 얻는 고유 한 방법 을 제공합니다 .
var timestamp = $.now();
(그냥 (new Date).getTime()
표현을 구현 하는 것 외에도 )
parseInt
결과 값은 항상 이므로 필요하지 않습니다 Number
.
console.log(new Date().valueOf()); // returns the number of milliseconds since the epoch
+new Date
.. :)
Date.now()
다른 옵션 외에도 dateformat ISO를 원한다면 직접 얻을 수 있습니다.
console.log(new Date().toISOString());
new Date("2017-05-04T07:11:28.940Z") - new Date("2017-05-04T07:11:14.092Z")
간단히 말해서, 자바 스크립트로 타임 스탬프 문자열을 반환하는 함수가 있습니다. 예 : 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;
}
JavaScript 의 기본 객체 인 Date 는 시간에 대한 모든 데이터를 얻는 방법입니다.
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();
내가 아직 보지 못한 것
Math.floor(Date.now() / 1000); // current time in seconds
내가 아직 보지 못한 또 하나는
var _ = require('lodash'); // from here https://lodash.com/docs#now
_.now();
Date.now() /1000 |0
동일하고 전에 답변되었습니다
Math.floor()
그것을 편집했지만와 동일한 효과가 있음을 분명히하기 위해서만 편집 했습니다 |0
. 난 당신이나 아무것도 다치게하고 싶지 않았다. 나는 당신에게 어떤 식 으로든 당신의 대답이 이미 존재한다고 말하고 싶었습니다. 주어진 모든 답변을 살펴보면 어떤 식 으로든 바닥에 주목하는 사람들이 있습니다.
_.now()
약간 과잉 이라고 생각합니다 . 사용해야하는 Lodash 기능 (이 경우 NPM의 _.now ()) 만 가져 오는 것이 좋지만을 사용하기 위해 패키지를 더 이상 사용하지 않습니다 Date.now()
.
이 Date.getTime()
방법은 약간의 조정으로 사용할 수 있습니다.
getTime 메소드가 리턴 한 값은 1970 년 1 월 1 일 00:00:00 UTC 이후의 밀리 초 수입니다.
floor
필요한 경우 결과를 1000으로 나누어 유닉스 타임 스탬프를 얻습니다 .
(new Date).getTime() / 1000
이 Date.valueOf()
방법은 기능적으로와 Date.getTime()
동일하므로 날짜 객체에서 산술 연산자를 사용하여 동일한 결과를 얻을 수 있습니다. 제 생각에는이 접근 방식은 가독성에 영향을 미칩니다.
new Date().getTime() / 1000
()
후 new Date
와 .getTime()
이후 /
의 뜻 어쨌든 숫자로 Date 객체를 캐스팅.
코드 Math.floor(new Date().getTime() / 1000)
는로 단축 될 수 있습니다 new Date / 1E3 | 0
.
직접 getTime()
호출 을 건너 뛰고 기능 | 0
의 대체로 사용하십시오 Math.floor()
. 또한 1E3
더 짧다는 것을 기억하는 것이 좋습니다 1000
( 1E3
상수 로 표시하려면 대문자 E가 소문자보다 선호 됨 ).
결과적으로 다음과 같은 결과가 나타납니다.
var ts = new Date / 1E3 | 0;
console.log(ts);
"Math.floor(new Date().getTime()/1000)".length == 37;
"new Date/1E3|0".length == 14;
= 23 바이트;
Math.floor()
의해 |0
"명확하고 이해하기"이 코드를하고있다. 로 교체 1000
하여 1 바이트를 절약 할 수있는 점이 무엇인지 설명하십시오 1E3
. 이건 말도 안돼 잘못된 코드가 보입니다.
오늘-2020.04.23 선택한 솔루션에 대한 테스트를 수행합니다. Chrome 81.0, Safari 13.1, Firefox 75.0의 MacOs High Sierra 10.13.6에서 테스트했습니다.
Date.now()
(E)는 Chrome 및 Safari에서 가장 빠르며 Firefox에서 두 번째로 빠르며 빠른 크로스 브라우저 솔루션에 가장 적합합니다.performance.now()
놀랍게도 솔루션 (G)는 Firefox의 다른 솔루션보다 100 배 이상 빠르지 만 Chrome에서는 느립니다.크롬에 대한 결과
당신은 당신의 시스템에서 테스트를 수행 할 수 있습니다 여기에
테스트에 사용 된 코드는 아래 스 니펫에 표시됩니다.
performance.now()
스탬프 측면에서 가장 정확한 것으로 테스트 했으므로 관심이 있습니다 .
privacy.reduceTimerPrecision
결과는 가장 가까운 밀리 초로 반올림됩니다. 기본적으로 활성화되어 있지만 비활성화 할 수 있습니다. developer.mozilla.org/en-US/docs/Web/API/ 성능
을 사용하는 것이 좋습니다 moment.js
. 유닉스 시대 이후 밀리 초를 얻으려면
moment().valueOf()
유닉스 시대 이후의 초 수를 얻으려면
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를 설치하고 사용하는 다른 방법을 포함하여 자세한 내용은 해당 문서를 참조하십시오.
마이크로 초 해상도의 타임 스탬프에는 다음이 있습니다 performance.now
.
function time() {
return performance.now() + performance.timing.navigationStart;
}
이것은 예를 들어 수율 수 1436140826653.139
있지만, Date.now
단지가 있습니다 1436140826653
.
당신은 사용할 수 있습니다
var timestamp = new Date().getTime();
console.log(timestamp);
현재 타임 스탬프를 가져옵니다. 별도의 조치를 취할 필요가 없습니다.
다음은 형식으로 타임 스탬프를 생성하는 간단한 함수입니다. 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())));
}
(new (chain (-date) (to-i-s-o-string)))
입니다..
// 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>
Date.now를 지원하지 않는 모든 브라우저는 현재 날짜 시간을 얻기 위해 이것을 사용할 수 있습니다.
currentTime = Date.now() || +new Date()
Date.now
하여 호출하기 전에 실제로 존재하고 (그리고 기능인) 주장하는 것 currentTime = typeof Date.now === "function" ? Date.now() : +new Date()
입니다.
다른 날짜 에 JQuery Cookie 의 소스 코드에서 주어진 Date 객체를 Unix 타임 스탬프로 변환하는 멋진 방법을 배웠습니다 .
예를 들면 다음과 같습니다.
var date = new Date();
var timestamp = +date;
Node.js에서 타임 스탬프를 생성하는 기본 방법을 원한다면 잘 작동합니다.
var time = process.hrtime();
var timestamp = Math.round( time[ 0 ] * 1e3 + time[ 1 ] / 1e6 );
우리 팀은 이것을 사용하여 로컬 호스트 환경에서 캐시를 버스트합니다. 출력은 /dist/css/global.css?v=245521377
에 245521377
의해 생성 된 타임 스탬프 hrtime()
입니다.
바라건대 이것이 도움이되기를 바랍니다. 위의 방법도 잘 작동 할 수 있지만 Node.js의 요구에 가장 간단한 방법이라는 것을 알았습니다.
이것은 작동하는 것 같습니다.
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);
}
};
이 글을 쓰는 시점에서 가장 큰 대답은 9 살이며 그 이후 많은 부분이 바뀌 었습니다.
Date.now()
고대 (pre 9 이전) 브라우저에서 이것이 깨지지 않을 것이라고 확신하려면 다음과 같이 확인하십시오.
const currentTimestamp = (!Date.now ? +new Date() : Date.now());
이것은 물론 초가 아닌 에포크 시간 이후 밀리 초를 반환합니다.
더 간단한 방법 :
var timeStamp=event.timestamp || new Date().getTime();
event
. 답변을 작성하는 대신 해결 방법에 대한 더 나은 설명을 제공해야합니다. 부디!