JavaScriptでタイムスタンプを取得するにはどうすればよいですか?
Unixタイムスタンプに似たもの、つまり、現在の時刻と日付を表す単一の数値。数字または文字列として。
+ new Date()
のような単項演算子は、オブジェクトplus
のvalueOf
メソッドをトリガーしDate
、タイムスタンプを返します(変更なしで)。
詳細:
現在のほとんどすべてのブラウザDate.now()
で、ミリ秒単位でUTCタイムスタンプを取得するために使用できます。これに対する注目すべき例外はIE8以前です(互換性の表を参照)。
ただし、これには簡単にシムを作成できます。
if (!Date.now) {
Date.now = function() { return new Date().getTime(); }
}
タイムスタンプを秒単位で取得するには、次を使用できます。
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);
これにより、エポックからのミリ秒(Unixタイムスタンプではない)がわかります。
var milliseconds = new Date().getTime();
var time = Date.now || function() {
return +new Date;
};
time();
私はこの回答の説明とともに複数のソリューションを提供します。
PSに不明な点がある場合は、遠慮なく質問してください。悲しいことに、誰かがクレジットを与えずにこれをトップアンサーにマージしました。
迅速で汚い解決策:
Date.now() /1000 |0
警告:魔法をかけると、2038年に壊れて、負の数を返す可能性があります
|0
。Math.floor()
その時までに代わりに使用してください
Math.floor()
解決:
Math.floor(Date.now() /1000);
この答えの下のコメントから取られたデレク朕會功夫によるいくつかのオタクの代替案:
new Date/1e3|0
動作させるためのポリフィルDate.now()
:
IEで機能させるには、次のようにします(MDNのPolyfill )。
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 )
もちろん、夏時間は中断されますが、構築しているものによっては、2038年にint32が中断された後、タイムスタンプに対して2項演算を実行する必要がある場合に役立つことがあります。
これも負の値を返しますが、コードを実行しているそのPCのユーザーが、少なくとも前年の12月31日にPCの時計を変更している場合に限ります。
コードが最初に実行された時点からの相対時間を知りたいだけの場合は、次のようなものを使用できます。
var relativeTime = (function () {
var start = Date.now();
return function () {
return Date.now() - start
}
})();
jQueryを使用し$.now()
ている場合は、jQueryのドキュメントで説明されているように使用できます。これにより、$.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()
式を実装するだけです)
参照: http://api.jquery.com/jQuery.now/
他のオプションに加えて、日付形式のISOが必要な場合は、直接取得できます。
console.log(new Date().toISOString());
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;
}
JavaScriptのネイティブオブジェクトであるDateは、時間に関するすべてのデータを取得する方法です。
JavaScriptでは、タイムスタンプはクライアントコンピューターの設定に依存するため、100%正確なタイムスタンプではないことに注意してください。最良の結果を得るには、サーバー側からタイムスタンプを取得する必要があります。
とにかく、私の好みの方法はバニラを使用することです。これはJavaScriptでそれを行う一般的な方法です:
Date.now(); //return 1495255666921
MDNでは、次のように言及されています。
Date.now()メソッドは、1970年1月1日00:00:00UTCから経過したミリ秒数を返します。
now()はDateの静的メソッドであるため、常にDate.now()として使用します。
ES5より前のバージョンを使用している場合、機能Date.now();
せず、以下を使用する必要があります。
new Date().getTime();
今日-2020.04.23選択したソリューションのテストを実行します。Chrome 81.0、Safari 13.1、Firefox75.0のMacOsHigh Sierra10.13.6でテストしました
Date.now()
(E)はChromeとSafariで最速で、Firefoxで2番目に高速であり、これはおそらく高速のクロスブラウザーソリューションに最適です。performance.now()
(G)は、驚くべきことに、Firefoxの他のソリューションよりも100倍以上高速ですが、Chromeでは最も低速です。クロムの結果
あなたはここであなたのマシンでテストを実行することができます
テストで使用されるコードは、以下のスニペットに示されています
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
まだ見たことがない
Math.floor(Date.now() / 1000); // current time in seconds
私がまだ見たことがないもう一つは
var _ = require('lodash'); // from here https://lodash.com/docs#now
_.now();
このDate.getTime()
方法は、少し調整するだけで使用できます。
getTimeメソッドによって返される値は、1970年1月1日00:00:00UTCからのミリ秒数です。
floor
必要に応じて、結果を1000で除算して、Unixタイムスタンプを取得します。
(new Date).getTime() / 1000
このDate.valueOf()
メソッドは機能的にDate.getTime()
はと同等であり、日付オブジェクトで算術演算子を使用して同じ結果を得ることができます。私の意見では、このアプローチは読みやすさに影響します。
コード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);
マイクロ秒の解像度のタイムスタンプの場合、次のようになりperformance.now
ます。
function time() {
return performance.now() + performance.timing.navigationStart;
}
これは、たとえば1436140826653.139
、をDate.now
与えることができますが、を与えるだけ1436140826653
です。
を使用することを強くお勧めし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をインストールして使用する他の方法など、詳細については、ドキュメントを参照してください。
使用できるのは
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())));
}
// 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()
これには解決策があります:jsでunixtimeスタンプをtimに変換しますこれを試してください
var a = new Date(UNIX_timestamp*1000);
var hour = a.getUTCHours();
var min = a.getUTCMinutes();
var sec = a.getUTCSeconds();
先日、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);
}
};
ロギング目的の場合は、ISOStringを使用できます
new Date().toISOString()
「2019-05-18T20:02:36.694Z」
以下のためのlodashとアンダースコアのユーザー、使用_.now
。
var timestamp = _.now(); // in milliseconds
Moment.jsは、Javascriptの日付を処理する際の多くの問題を抽象化できます。
見る: http://momentjs.com/docs/#/displaying/unix-timestamp/
moment().unix();
これを書いている時点で、一番の答えは9歳であり、それ以来多くの変化がありました。特に、ハッキーではないソリューションをほぼ普遍的にサポートしています。
Date.now()
これがいくつかの古い(ie9以前の)ブラウザーで壊れないことを絶対に確信したい場合は、次のようにチェックの後ろに置くことができます:
const currentTimestamp = (!Date.now ? +new Date() : Date.now());
もちろん、これは秒ではなく、エポック時間からのミリ秒を返します。
Date.nowのMDNドキュメント
より簡単な方法:
var timeStamp=event.timestamp || new Date().getTime();
特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。
ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。
ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。
ジョー・バロウロー対ウェイド事件の転覆に対応するNFLは、言葉を言わないことで、腹立たしいが予測可能なPRの結果でした。
(lから)パット・ペレス、ブルックス・ケプカ、パトリック・リードサウジアラビアのLIVゴルフリーグのさらに別の信じられないほどの記者会見で、スポーツのファンはブルックス・ケプカからでたらめな吐き気と質問回避の驚異的なマスタークラスを受けました。パトリックリード、ブライソンデシャンボー、パットペレス、最近のPGAツアーの脱北者。
暗号業界最大の沈没船の1つであるスリーアローズキャピタルは、ついにその悲惨さから解放されています。火曜日に、不良債権ヘッジファンドは、債権者からの返済を要求する訴訟の高まりに応えて、バージンアイランド裁判所によって清算を命じられました彼らが3ACに行ったローン。
Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday
シーレン「Ms.JuicyBaby」ピアソンは、先月脳卒中で入院した後、「もう一度たくさんのことをする方法を学ばなければならない」ため、言語療法を受けていることを明らかにしました。
オスカー受賞者の世紀半ばの家には、3つのベッドルーム、2つのバス、オーシャンフロントの景色があります。
Mais um mês se findando — e metade do ano de 2022 já passou. Sabe o que isso significa? Não, não é hora de verificar se você está cumprindo com suas resoluções de Ano Novo.
1.ドラマを見た後、起業する考えはありますか?あなたのビジネスはボトルネックに遭遇しましたか?方向性がなくてわからない場合は、ドラマを追いかけて行くことを心からお勧めします。(?)ブラフではなく、最も完璧なビジネス例を隠すドラマがあります。2.ブレイキング・バッドとその弁護士ドラマ「ブレイキング・バッド」を見た友人たちは、演劇の中で、穏やかな表情で、弁護士のソウル・グッドマンに深く感銘を受けなければなりません。口を開けて、感覚の弱い傭兵の性格を持っています。道徳の面で、サル・グッドマンは無意識のうちに劇に欠かせない役割を果たし、彼自身のシリーズ「絶望的な弁護士」(ベター・コール・ソール)を生み出しました。ウェントウのテキストとビデオは、劇中のソウル・グッドマンのテレビコマーシャルです。製品(サービス)、競争戦略、市場ポジショニング、ブランド名、ターゲット顧客グループ、コミュニケーション軸から広告まで、サル・グッドマンの役割のビジネス設定は、「最低」と見なすことができる超超超超超超完全です。ブランドコミュニケーションのコスト」「変化」のモデル。なぜ?私の分析をご覧ください。3.ソウル・グッドマンの「事業戦略」1.基本情報ブランド名:Saul Goodman製品:法律相談サービス対象顧客:麻薬中毒、飲酒運転、事故など。法律知識の欠如は、一般的に公立弁護士にしか余裕がなく、真面目な弁護士も「特別な法律を持つ消費者」を避けます。恐れてはいけない「ニーズ」。コミュニケーションの主軸:この国のすべての男性、女性、子供は有罪判決を受けるまで無実だと思います。地域:アルバカーキ市スローガン:Thrallに電話したほうがいいです!(ベター・コール・ソール)広告:2つの可能性のある犯罪状況をシミュレートします+サウルの主張+サウルのスローガン2をより適切に呼び出します。