7

Javaで行うように、日付オブジェクトを長い形式(ミリ秒形式の場合があります)に変換しようとしていました。
私のニーズを満たすために、いくつかの試行錯誤の後、私は以下の方法を見つけました:

var date = new Date();  
var longFormat = date*1;  // dont know what it does internally
console.log(longFormat); // output was 1380625095292  

確認するために、を使用して逆にするnew Date(longFormat);と、正しい出力が得られました。要するに、私は何らかの方法で私のニーズを満たすことができましたが、内部的にどのような乗算が行われるかはまだ空白です? 現在の日付に数字の2を掛けようとすると、2057年の日付が得られました!! 正確に何が起こっているのか、誰か知っていますか?

4

6 に答える 6

11

長い形式では01.01.1970からのティック数が表示されるため、現時点では約 43 年です。

*演算子は、引数を数値にキャストするように強制します。Dateオブジェクトには、おそらくgetTime().

ミリ秒数を 2 倍にすると、さらに 43 年、つまり 2057 年 (またはその程度) になります。

于 2013-10-01T11:15:41.120 に答える
5

乗算すると得られるのはティックです

訪問: JavaScript 日付オブジェクトをティックに変換する方法

また、* 2それを行うと、ティックの2倍の値が得られるため、日付は将来のものです

var date = new Date()
var ticks = date.getTime()

ref: Javascript 日付ティック

getTime1970 年 1 月 1 日からのミリ秒数を返します。したがって* 1、このミリ秒の値を取得している可能性があります。あなたが* 2それをすると、それらのミリ秒は2倍になり、2057年の日付が得られます!!

于 2013-10-01T11:11:51.400 に答える
0

日付オブジェクトメソッドを使用するだけです。

ドキュメントを読む: JavaScript Date オブジェクト

var miliseconds=yourDateObject.getMiliseconds();

ティックを取得したい場合:

var ticks = ((yourDateObject.getTime() * 10000) + 621355968000000000);

また

var ticks = someDate.getTime();
于 2013-10-01T11:18:04.350 に答える
0

日付は、long-object であるタイムスタンプとして内部的に保存されます (タイムスタンプの詳細)。これが、new Date(long) で日付を作成できる理由です。Date に整数を掛けようとすると、次のようになります。

    var date = new Date();
    var longFormat = date*1;
    // date*1 => date.getTime() * 1

    console.log(longFormat); // output is 1380.....

Javascript は、日付から因数 1 を掛けることができる形式 (この場合は内部の長い形式) への最も簡単な変換を見つけようとします。

于 2013-10-01T11:13:16.833 に答える
0

Javascript の日付オブジェクトは、1970 年 1 月 1 日からのミリ秒単位の UTC時間値に基づいています。たまたま Java が同じエポックを使用しているにもかかわらず、時間値は秒です。

時間値を取得するには、getTimeメソッドを使用するか、日付オブジェクトに数学演算を適用できます。

var d = new Date();
alert(d.getTime());  // shows time value
alert(+d);           // shows time value

Date コンストラクターは、日付オブジェクトを作成するための引数として時間値も受け入れるため、日付オブジェクトをコピーするには、次のようにします。

var d2 = new Date(+d);

もしあなたがそうするなら:

var d3 = new Date(2 * d);

(非常に大まかに)次の日付を効果的に作成しています。

1970 + (2013 - 1970) * 2 = 2056
于 2013-10-01T11:26:25.617 に答える
-1

Date コンストラクターの解析機能を試すことができます。その結果を文字列化できます。

>

 new Date("04/06/13").toString()
"Sun Apr 06 1913 00:00:00 GMT+0200"

// または何か しかし、解析は実装に依存しており、奇数の DD/MM/YY 形式を正しく解釈するエンジンは多くありません。MM/DD/YYYY を使用していた場合、おそらくどこでも認識されるでしょう。

代わりに、それがどのように解析されるかを確認したいので、自分でそれを行い、単一の部分をコンストラクターにフィードする必要があります:

var parts = "04/06/13".split("/"),
    date = new Date(+parts[2]+2000, parts[1]-1, +parts[0]);
console.log(date.toString()); // Tue Jun 04 2013 00:00:00 GMT+0200
于 2013-10-01T11:11:26.043 に答える