Unix のタイムスタンプに似たもので、現在の時刻と日付を表す単一の数値です。数値または文字列として。
41 に答える
ショート & スナジー:
+ 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();
この回答の説明で複数のソリューションを提供します。不明な点があれば遠慮なく質問してください
迅速で汚い解決策:
Date.now() /1000 |0
警告: 2038 年に壊れて、魔法を使うと負の数を返す可能性があります。その時までに代わりに
|0
使うMath.floor()
Math.floor()
解決:
Math.floor(Date.now() /1000);
この回答の下のコメントから取得したDerek 朕會功夫によるいくつかのオタクの代替案:
new Date/1e3|0
作業を開始するためのポリフィルDate.now()
:
IE で動作させるには、次のようにします ( MDNのポリフィル):
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 を使用している場合は、 jQuery のドキュメント$.now()
で説明されているように使用できます。これにより、内部的に同じことが行われるため、ポリフィルが廃止されます。$.now()
(new Date).getTime()
jQuery のバージョンに満足している場合は、自分で見つけられなかったので、この回答に賛成票を投じることを検討してください。
ここで、何|0
が行われるかについて簡単に説明します。
を指定すること|
で、インタープリターにバイナリ OR 演算を実行するように指示します。
ビット操作には、10 進数の結果をDate.now() / 1000
整数に変換する絶対数が必要です。
その変換中に小数が削除されるため、 using の出力と同様の結果が得られMath.floor()
ます。
ただし、注意してください: 64 ビット double を 32 ビット整数に変換します。
これにより、膨大な数を扱うときに情報が失われます。
Javascript が Strict モードで 64 ビット整数に移行しない限り、32 ビット整数のオーバーフローにより、タイムスタンプは 2038 年以降に壊れます。
詳細については、次のDate.now
リンクをたどってください: Date.now()
@ MDN
var timestamp = Number(new Date()); // current time as number
console.log(new Date().valueOf()); // returns the number of milliseconds since the epoch
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();
まとめると、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;
}
まだ見てないやつ
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:00 UTC からのミリ秒数です。
floor
必要に応じて、結果を 1000 で割り、Unix タイムスタンプを取得します。
(new Date).getTime() / 1000
このDate.valueOf()
メソッドは と機能的に同等Date.getTime()
であり、日付オブジェクトで算術演算子を使用して同じ結果を得ることができます。私の意見では、このアプローチは読みやすさに影響します。
The code Math.floor(new Date().getTime() / 1000)
can be shortened to new Date / 1E3 | 0
.
Consider to skip direct getTime()
invocation and use | 0
as a replacement for Math.floor()
function.
It's also good to remember 1E3
is a shorter equivalent for 1000
(uppercase E is preferred than lowercase to indicate 1E3
as a constant).
As a result you get the following:
var ts = new Date / 1E3 | 0;
console.log(ts);
を使用することを強くお勧めし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);
現在のタイムスタンプを取得します。余分なことをする必要はありません。
// 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>
これはうまくいくようです。
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);
}
};
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 でのニーズに対する最も簡単なアプローチであることがわかりました。
先日、 JQuery Cookieのソース コードから、特定の Date オブジェクトを Unix タイムスタンプに変換する非常に優れた方法を学びました。
次に例を示します。
var date = new Date();
var timestamp = +date;
xmlhttp 呼び出しのオブジェクトで必要になることがあるので、これが気に入っています。
timestamp : parseInt(new Date().getTime()/1000, 10)
var d = new Date();
console.log(d.valueOf());
JavaScript でタイムスタンプを取得する
JavaScript では、タイムスタンプは 1970 年 1 月 1 日から経過したミリ秒数です。
IE8未満をサポートするつもりがない場合は、使用できます
new Date().getTime(); + new Date(); and Date.now();
新しい Date オブジェクトを作成しなくてもタイムスタンプを直接取得できます。
必要なタイムスタンプを返すには
new Date("11/01/2018").getTime()
推奨される適切な方法はNumber(new Date())
、コードの可読性に関して、
また、UglifyJS と Google-Closure-Compiler は、解析されたコード ロジック ツリーの複雑さを軽減します (これらのいずれかを使用してコードを隠したり縮小したりする場合に関連します)。
時間分解能が低い Unix タイムスタンプの場合、現在の数値を で割り1000
、全体を維持します。
これは、結果に日、月、年、時、分、および秒を使用して、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);
time = Math.round(((new Date()).getTime()-Date.UTC(1970,0,1))/1000);