JavaScriptでタイムスタンプを取得する方法を教えてください。
Unixのタイムスタンプに似たもの、つまり現在の日時を表す単一の数値です。数値または文字列として。
+ new Date()
plus
のような単項演算子は、valueOf
オブジェクト内のDate
メソッドを起動し、(変更なしで)タイムスタンプを返します。
詳細:
現在のほとんどのブラウザでは、 Date.now()
を使用してUTCタイムスタンプを ミリ秒 で取得できます。これに対する顕著な例外はIE8以前です( 互換性表 を参照)。
あなたは簡単にこれのためにシムを作ることができます:
if (!Date.now) {
Date.now = function() { return new Date().getTime(); }
}
seconds のタイムスタンプを取得するには、次のようにします。
Math.floor(Date.now() / 1000)
または代わりにあなたが使用することができます:
Date.now() / 1000 | 0
これは少し速くなりますが、読みにくくなります( この回答も参照してください )。
私はDate.now()
(互換性のあるシム)を使うことを勧めます。長さが短く、新しいDate
オブジェクトが作成されないため、やや優れています。ただし、シムと最大限の互換性が必要ない場合は、「古い」メソッドを使用して ミリ秒 のタイムスタンプを取得できます。
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()
JavaScriptはエポックからのミリ秒数で動作しますが、他のほとんどの言語は秒で動作します。ミリ秒で作業することもできますが、PHPに値を渡すとすぐにPHPネイティブ関数はおそらく失敗します。だから私はミリ秒ではなく常に秒を使うようにしている。
これにより、Unixのタイムスタンプ(秒単位)がわかります。
var unix = Math.round(+new Date()/1000);
これにより、Epochからのミリ秒数がわかります(Unixタイムスタンプではありません)。
var milliseconds = new Date().getTime();
var time = Date.now || function() {
return +new Date;
};
time();
var timestamp = Number(new Date()); // current time as number
jQueryは 独自のメソッドを提供する タイムスタンプを取得するために/:
var timestamp = $.now();
(それ以外に(new Date).getTime()
式を実装しているだけです)
console.log(new Date().valueOf()); // returns the number of milliseconds since the Epoch
まとめると、JavaScriptでタイムスタンプ文字列を返す関数です。 例:15:06:38 PM
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;
}
他のオプションに加えて、あなたが日付フォーマットISOを望むならば、あなたはそれを直接得ることができます
console.log(new Date().toISOString());
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();
まだ見たことがない方
Math.floor(Date.now() / 1000); // current time in seconds
私がまだ見たことがないもう一つのものは
var _ = require('lodash'); // from here https://lodash.com/docs#now
_.now();
コードMath.floor(new Date().getTime() / 1000)
はnew Date / 1E3 | 0
に短縮できます。
直接 getTime()
呼び出しをスキップし、 Math.floor()
関数の代わりに| 0
を使用することを検討してください。また、1E3
は1000
の短縮形であることに注意してください(1E3
を定数として示す場合、小文字のEよりも大文字のEが推奨されます)。
その結果、次のものが得られます。
var ts = new Date / 1E3 | 0;
console.log(ts);
Date.getTime()
メソッドはちょっとしたTweakで使うことができます:
GetTimeメソッドによって返される値は、1970年1月1日00:00:00 UTCから経過したミリ秒数です。
結果を1000で割ってUnixタイムスタンプを取得します。 floor
必要ならば:
(new Date).getTime() / 1000
Date.valueOf()
メソッドはDate.getTime()
と機能的に同等です。これにより、dateオブジェクトに対して算術演算子を使用して同じ結果を得ることができます。私の意見では、このアプローチは読みやすさに影響します。
moment.js
を使用することを強くお勧めします。 UNIXエポック以降のミリ秒数を取得するには、次のようにします。
moment().valueOf()
UNIXエポックからの経過秒数を取得するには、次のようにします。
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をインストールして使用する他の方法を含む詳細については、 docs を参照してください。
// 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>
以下は、タイムスタンプを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())));
}
あなただけが使用できます
var timestamp = new Date().getTime();
console.log(timestamp);
現在のタイムスタンプを取得します。特別なことをする必要はありません。
マイクロ秒の分解能を持つタイムスタンプの場合、 performance.now
があります。
function time() {
return performance.now() + performance.timing.navigationStart;
}
これは、例えば1436140826653.139
を生成することができますが、Date.now
は1436140826653
のみを与える。
Date.nowをサポートしていないブラウザであれば、これを使用して現在の日時を取得できます。
currentTime = Date.now() || +new Date()
今日 - 2018.06.27私は純粋なjsソリューションのためにいくつかの時間比較を提供します。これは、軽量で効率的な方法でJSで時間を取得/測定したい人に役立ちます(たとえば、シミュレーション、ゲームなどのリアルタイムアプリケーションの場合)。
Chrome 67.0.3396.99(64ビット)、Safari 11.0.3(13604.5.6)、Firefox 59.0.2(64ビット)のMacO High Sierra 10.13.3でテスト済み。下のスクリーンショットでは、私はあなたに最速のブラウザ(Safari)の結果を示しています。
私が観察したように、Date.now()
は3つのブラウザすべてのタイムスタンプを取得する最も速い方法でした。 Safariは1秒あたり19.2Mの操作、Firefox 16.1M、Chrome 7.8Mを持っています。
new Date()*1
はChrome(2.8M)とFirefox(2.6M)では最も遅くなりました。 Number(new Date())
はSafari(2.9M)では最も遅くなりました。
それで、勝者のJSコードはDate.now()
で、最速のブラウザはSafariです(2倍速いそのクロム!)。
あなたのマシン上でテストを実行することができます: https://jsperf.com/timestamp-test-x 。
先日、与えられたDateオブジェクトを JQuery Cookie のソースコードからUnixのタイムスタンプに変換する本当にクールな方法を学びました。
これが例です:
var date = new Date();
var timestamp = +date;
これは解決策を持っています:それはjsの時間にunixタイムスタンプを変換する
var a = new Date(UNIX_timestamp*1000);
var hour = a.getUTCHours();
var min = a.getUTCMinutes();
var sec = a.getUTCSeconds();
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でこれが最も簡単な方法であることがわかりました。
lodash および underscore usersの場合は、_.now
を使用します。
var timestamp = _.now(); // in milliseconds
これはうまくいくようです。
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);
}
};
Moment.js はJavascript Datesを扱う際の多くの苦痛を和らげることができます。
参照してください: http://momentjs.com/docs/#/displaying/unix-timestamp/ /
moment().unix();
これを書いている時点で、一番の答えは9歳です、そしてそれ以来多くのことが変わりました - 特に、私たちは非ハッキングソリューションのためのほぼ普遍的なサポートを持っています:
Date.now()
あなたがこれが古代の(すなわち9より前の)ブラウザでは壊れないことを絶対に確信したいなら、あなたはそれをチェックの後ろに置くことができます。
const currentTimestamp = (!Date.now ? +new Date() : Date.now());
これは、エポック時からのミリ秒を返します。もちろん、秒ではありません。
もっと簡単な方法:
var timeStamp=event.timestamp || new Date().getTime();
xmlhttp呼び出し用のオブジェクトで必要になることがあるので、これは好きです。
timestamp : parseInt(new Date().getTime()/1000, 10)
var d = new Date();
console.log(d.valueOf());
推奨される適切な方法は、コードの可読性の点でNumber(new Date())
、です。
また、UglifyJSとGoogle-Closure-Compilerは、解析されたコードロジックツリーの複雑さを軽減します(コードを不明瞭にしたり縮小したりするためにそれらのいずれかを使用している場合に関連します)。
時間分解能が低いUnixタイムスタンプの場合は、全体を維持しながら、現在の数値を1000
で割るだけです。
var my_timestamp = ~~(Date.now()/1000);
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())));
}
ロギング目的の場合は、 ISOString を使用できます。
new Date().toISOString()
"2019-05-18T20:02:36.694Z"
次に示すのは、日、月、年、時、分、および秒を使用して、結果に日、月、年、時、分、および秒を使用して、JavaScriptでタイムスタンプを生成する別の解決策です( jsfiddle の例)。
var pad = function(int) { return int < 10 ? 0 + int : int; };
var timestamp = new Date();
timestamp.day = [
pad(timestamp.getDate()),
pad(timestamp.getMonth() + 1), // getMonth() returns 0 to 11.
timestamp.getFullYear()
];
timestamp.time = [
pad(timestamp.getHours()),
pad(timestamp.getMinutes()),
pad(timestamp.getSeconds())
];
timestamp.now = parseInt(timestamp.day.join("") + timestamp.time.join(""));
alert(timestamp.now);
new Date().getTime(); and Date.now();
>> Return current timestamp
new Date("11/01/2018").getTime()
>> Return required timestamp