4466

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

4

41 に答える 41

5537

ショート & スナジー:

+ new Date()

次のような単項演算子は、オブジェクト内のメソッドをplusトリガーし、タイムスタンプを返します (変更なし)。valueOfDate

詳細:

現在のほぼすべてのブラウザ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());

于 2008-10-21T09:32:32.487 に答える
603

小さいので、私はこれが好きです:

+new Date

これも同じくらい短く、最新のブラウザーと互換性があり、500 人以上がより優れていると投票したため、これも気に入っています。

Date.now()
于 2011-02-18T00:33:44.610 に答える
302

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

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

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

これにより、エポックからのミリ秒が得られます (Unix タイムスタンプではありません)。

var milliseconds = new Date().getTime();
于 2011-05-11T22:27:05.327 に答える
158
var time = Date.now || function() {
  return +new Date;
};

time();
于 2008-10-21T10:05:36.320 に答える
157

この回答の説明で複数のソリューションを提供します。不明な点があれば遠慮なく質問してください


迅速で汚い解決策:

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

于 2012-07-12T07:15:09.637 に答える
95
var timestamp = Number(new Date()); // current time as number
于 2008-10-21T13:00:22.520 に答える
61

jQueryは、タイムスタンプを取得する独自のメソッドを提供します。

var timestamp = $.now();

(式を実装するだけでなく(new Date).getTime()

参照: http://api.jquery.com/jQuery.now/

于 2013-03-15T14:19:22.083 に答える
47

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

于 2009-04-30T16:53:52.557 に答える
47

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();
于 2017-05-20T04:49:21.997 に答える
44

まとめると、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;
}
于 2012-09-21T19:12:49.653 に答える
33

まだ見てないやつ

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

もう一つ、まだ見ていないのは

var _ = require('lodash'); // from here https://lodash.com/docs#now
_.now();
于 2014-03-31T08:18:48.013 に答える
30

このDate.getTime()メソッドは、少し調整して使用できます。

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

floor必要に応じて、結果を 1000 で割り、Unix タイムスタンプを取得します。

(new Date).getTime() / 1000

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

于 2012-05-03T09:02:16.450 に答える
26

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

于 2015-10-14T16:41:30.740 に答える
23

を使用することを強くお勧めし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 をインストールして使用する他の方法を含む詳細については、ドキュメントを参照してください。

于 2015-07-14T08:29:56.083 に答える
21

のみ使用できます

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

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

于 2016-03-16T05:45:22.850 に答える
20

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

于 2015-09-29T13:55:41.480 に答える
15

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

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);
            }
};
于 2015-10-09T02:03:25.737 に答える
14

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

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

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

これが役に立てば幸いです。上記の方法も同様に機能しますが、これが Node.js でのニーズに対する最も簡単なアプローチであることがわかりました。

于 2015-05-29T13:40:52.797 に答える
14

先日、 JQuery Cookieのソース コードから、特定の Date オブジェクトを Unix タイムスタンプに変換する非常に優れた方法を学びました。

次に例を示します。

var date = new Date();
var timestamp = +date;
于 2015-03-11T09:52:48.580 に答える
8

xmlhttp 呼び出しのオブジェクトで必要になることがあるので、これが気に入っています。

timestamp : parseInt(new Date().getTime()/1000, 10)
于 2014-04-24T06:46:40.250 に答える
5
var d = new Date();
console.log(d.valueOf()); 
于 2015-04-13T08:29:01.533 に答える
5

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

JavaScript では、タイムスタンプは 1970 年 1 月 1 日から経過したミリ秒数です。

IE8未満をサポートするつもりがない場合は、使用できます

new Date().getTime(); + new Date(); and Date.now();

新しい Date オブジェクトを作成しなくてもタイムスタンプを直接取得できます。

必要なタイムスタンプを返すには

new Date("11/01/2018").getTime()
于 2019-11-26T04:33:05.727 に答える
4

推奨される適切な方法はNumber(new Date())、コードの可読性に関して、

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

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

于 2015-03-27T11:43:20.353 に答える
1

これは、結果に日、月、年、時、分、および秒を使用して、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);
于 2014-05-22T21:00:20.317 に答える
-21
time = Math.round(((new Date()).getTime()-Date.UTC(1970,0,1))/1000);
于 2009-11-11T11:38:57.843 に答える