web-dev-qa-db-ja.com

JavaScriptでタイムスタンプを取得する方法

JavaScriptでタイムスタンプを取得する方法を教えてください。

Unixのタイムスタンプに似たもの、つまり現在の日時を表す単一の数値です。数値または文字列として。

3668
pupeno

ショート&スネジー:

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

4438
daveb

小さいのでこれが好きです。

+new Date

私もこれが好きです、それはそれがちょうど同じくらい短くて現代のブラウザと互換性があり、そして500人以上の人々がそれがより良いと投票したので: 

Date.now()
459
xer0x

JavaScriptはエポックからのミリ秒数で動作しますが、他のほとんどの言語は秒で動作します。ミリ秒で作業することもできますが、PHPに値を渡すとすぐにPHPネイティブ関数はおそらく失敗します。だから私はミリ秒ではなく常に秒を使うようにしている。

これにより、Unixのタイムスタンプ(秒単位)がわかります。

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

これにより、Epochからのミリ秒数がわかります(Unixタイムスタンプではありません)。

var milliseconds = new Date().getTime();
248
Daithí
var time = Date.now || function() {
  return +new Date;
};

time();
133
Staale
var timestamp = Number(new Date()); // current time as number
77
aemkei

jQuery独自のメソッドを提供する タイムスタンプを取得するために/:

var timestamp = $.now();

(それ以外に(new Date).getTime()式を実装しているだけです)

REF: http://api.jquery.com/jQuery.now/

56
VisioN

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

39
Tom Viner

まとめると、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;
}
38
live-love

他のオプションに加えて、あなたが日付フォーマットISOを望むならば、あなたはそれを直接得ることができます

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

36

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

まだ見たことがない方 

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

私がまだ見たことがないもう一つのものは

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

コードMath.floor(new Date().getTime() / 1000)new Date / 1E3 | 0に短縮できます。

直接 getTime() 呼び出しをスキップし、 Math.floor() 関数の代わりに| 0を使用することを検討してください。また、1E31000の短縮形であることに注意してください(1E3を定数として示す場合、小文字のEよりも大文字のEが推奨されます)。

その結果、次のものが得られます。

var ts = new Date / 1E3 | 0;

console.log(ts);
24
Valentin

Date.getTime() メソッドはちょっとしたTweakで使うことができます:

GetTimeメソッドによって返される値は、1970年1月1日00:00:00 UTCから経過したミリ秒数です。

結果を1000で割ってUnixタイムスタンプを取得します。 floor 必要ならば:

(new Date).getTime() / 1000

Date.valueOf()メソッドはDate.getTime()と機能的に同等です。これにより、dateオブジェクトに対して算術演算子を使用して同じ結果を得ることができます。私の意見では、このアプローチは読みやすさに影響します。

24
Salman A

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 を参照してください。

20
FullStack

// 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>

19
blueberry0xff

以下は、タイムスタンプを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())));
}
19
deepakssn

あなただけが使用できます 

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

現在のタイムスタンプを取得します。特別なことをする必要はありません。

19
Jitendra Pawar

マイクロ秒の分解能を持つタイムスタンプの場合、 performance.now があります。

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

これは、例えば1436140826653.139を生成することができますが、Date.now1436140826653のみを与える。

17
iter

Date.nowをサポートしていないブラウザであれば、これを使用して現在の日時を取得できます。

currentTime = Date.now() || +new Date()
15
mr.boyfox

今日 - 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)の結果を示しています。

enter image description here

私が観察したように、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

15

先日、与えられたDateオブジェクトを JQuery Cookie のソースコードからUnixのタイムスタンプに変換する本当にクールな方法を学びました。

これが例です:

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

これは解決策を持っています:それはjsの時間にunixタイムスタンプを変換する

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

Node.jsでタイムスタンプを生成する基本的な方法が必要な場合、これはうまくいきます。

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

私たちのチームはこれを使ってlocalhost環境でキャッシュを無効にしています。出力は/dist/css/global.css?v=245521377です。ここで245521377hrtime()によって生成されたタイムスタンプです。 

うまくいけば、上の方法でもうまくいくことができますが、Node.jsでこれが最も簡単な方法であることがわかりました。

13
Kevin Leary

lodash および underscore usersの場合は、_.nowを使用します。

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

これはうまくいくようです。

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);
            }
};
12
Ron Royston

Moment.js はJavascript Datesを扱う際の多くの苦痛を和らげることができます。 

参照してください: http://momentjs.com/docs/#/displaying/unix-timestamp/ /

moment().unix();
9
Rimian

これを書いている時点で、一番の答えは9歳です、そしてそれ以来多くのことが変わりました - 特に、私たちは非ハッキングソリューションのためのほぼ普遍的なサポートを持っています:

Date.now()

あなたがこれが古代の(すなわち9より前の)ブラウザでは壊れないことを絶対に確信したいなら、あなたはそれをチェックの後ろに置くことができます。

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

これは、エポック時からのミリ秒を返します。もちろん、秒ではありません。

Date.nowのMDNドキュメント

9
Olemak

もっと簡単な方法:

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

xmlhttp呼び出し用のオブジェクトで必要になることがあるので、これは好きです。

timestamp : parseInt(new Date().getTime()/1000, 10)
5
DevC
var d = new Date();
console.log(d.valueOf()); 
3
jameslouiz

推奨される適切な方法は、コードの可読性の点でNumber(new Date())、です。

また、UglifyJSとGoogle-Closure-Compilerは、解析されたコードロジックツリーの複雑さを軽減します(コードを不明瞭にしたり縮小したりするためにそれらのいずれかを使用している場合に関連します)。 

時間分解能が低いUnixタイムスタンプの場合は、全体を維持しながら、現在の数値を1000で割るだけです。 

3
user257319

var my_timestamp = ~~(Date.now()/1000);

2
Eugene
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())));
}
1
unknown123

ロギング目的の場合は、 ISOString を使用できます。

new Date().toISOString()

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

1
cenkarioz

次に示すのは、日、月、年、時、分、および秒を使用して、結果に日、月、年、時、分、および秒を使用して、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);
0
Saucier
new Date().getTime(); and Date.now();

>> Return current timestamp

new Date("11/01/2018").getTime()

>> Return required timestamp
0
ashish