これを1332251639632から1332251639にしたい
このコードを試してみましたが、文字列ではないため機能しません
var date = new Date();
var t = date.getTime();
var p = t.substring(10);
alert(p);
PHPのtime()で10桁の数字を返すのでカットしたい
これを1332251639632から1332251639にしたい
このコードを試してみましたが、文字列ではないため機能しません
var date = new Date();
var t = date.getTime();
var p = t.substring(10);
alert(p);
PHPのtime()で10桁の数字を返すのでカットしたい
このような?
var p = parseInt(t/1000);
より良いアプローチは次のとおりであるという意見があります。
var dateObject = new Date(),
time = dateObject.getTime();
Math.floor ( time / 1000 );
理由は次のとおりです。
parseInt() ECMA 仕様では、文字列が特定の基数で変換されることを想定しています。舞台裏でインタープリターは文字列を操作しており、最後に整数を返します。関数がどのように動作することを意図したMDNの例。Chris Wesseling が指摘しているように、文字列と基数を使用する追加の作業のために遅くなります。ブラウザーの将来のバージョンで実装される予定の ES5 では、基数の使用が義務付けられます。その理由は次のとおりです。
parseInt( "011" ); // 9 を返し、0 の開始文字列は 8 進数を示します
parseInt( "011", 10 ); // 予想どおり 11 を返します
getTime() MDNは数値 (1970 年 1 月 1 日 00:00:00 UTC からのミリ秒) を返します。文字列から数値への変換はありません。これは、「意味的に」丸め関数を使用する方が良いことを意味します。
Linux y2k(38)の問題でさえ、数値は 64 ビットであり、Javascript の整数は 53 ビットのECMA 仕様 SO questionで提示されているため、違いはありません。
Iliaの解決策として提案されているように丸めたり、次のような部分文字列を使用したりできます。
var date = new Date();
var t = date.getTime().toString();
var p = t.substring(0, 10);
alert(p);
試す:
var t = "" + date.getTime();
var p = t.substring(0,10);
これはどう?
var date = new Date();
var t = date.getTime();
var p = parseInt(t.toString().match(/\d{10}/));
alert(p);
数値を文字列に変換し、最初の 10 桁を照合してから、結果を数値に再変換します。
の間に違いがあったかどうか興味があります
var p = parseInt(t/1000);
と
var p = Math.floor(t/1000);
これは私がしました:
start = new Date().getTime(); for ( var i=0; i<1000000; i++) parseInt(start/1000); new Date().getTime() - start;
と
start = new Date().getTime(); for ( var i=0; i<1000000; i++) Math.floor(start/1000); new Date().getTime() - start;
Chromiumでは、ネットブックの 6.6parseInt
に対して約 7.2 秒かかります。Math.floor
Firefox は、スクリプトに時間がかかりすぎると不満を漏らしていました。ほぼ同時に 200000 回の操作しか実行できませんでした。
したがって、これは実装に大きく依存していると思います。