2017-02-02 8 views
1

GetFullYear()を現在の年の初めからリアルタイム秒で変換する方法はありますか? 2017の出力を持つ代わりに、私は年末まで動的な秒数を持っています。 GetFullYear()の最大値を秒単位で変換して計算します。事前に おかげでJavaScriptで秒単位でgetFullYear()を変換する

+0

よく、年間を知るには不十分です...年、月、日、時、分の秒が必要です –

+0

2つの日付の差を秒単位で調べてみてください。これを参照してくださいhttp://stackoverflow.com/questions/2024198/how-many-seconds-between-two-dates – RaR

答えて

1
var date1 = new Date("1/1/2017"); 
var date2 = new Date("2/2/2017"); 
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24));//returns 32 
var time_in_seconds = diffDays*60*60;// calculate the date in seconds. 
+1

いくつかの説明が役立つかもしれません。 – Pavlo

+0

console.log(diffDays)を実行すると、1月1日から2月2日までの日数が表示されず、60 * 60で乗算されて秒単位で変更されます。 –

+0

Dateコンストラクタで文字列を解析しないでください。 'new Date(2017,0,1)'は入力するのが少なく、結果も確実です。すべての日に8.64e7があるわけではありません。 ;-) – RobG

1

は、現在の年の初めからリアルタイム秒でにgetFullYearを()に変換する方法はありますか?

2つの日付の間の差をミリ秒で取得するには、それらを減算するだけです。今年の初めからmsを取得するには、今から1月1日の00:00:00の日付を引く。

function msSinceStartOfYear() { 
 
    var now = new Date() 
 
    return now - new Date(now.getFullYear(), 0); 
 
} 
 

 
console.log(msSinceStartOfYear());

として同様にgetFullYear(の最大値を求める)は、いくつかの計算を行うために秒単位で変換されます。

ECMA-262によると、最大時間値は約285616年1970年1月1日、または年287586の時代の後である、9,007,199,254,740,992です。理論上の最大値はgetFullYearです。しかし

new Date(9007199254740992) 

戻りヌル

new Date(Date.UTC(275760, 0))/1000 // 8,639,977,881,600 seconds 

を私はなぜあなた見当がつかない:

new Date(100000000 * 8.64e7).getUTCFullYear() // 275,760 

秒に変換:実際の範囲は、1日あたりのミリ秒数で日掛けて、その最大値を取得するには、正確100,000,000日ですそれをしたい。私はタイムゾーンの違いを取り除くためにUTCを使用しました。 "ローカル"タイムゾーンを使用すると、タイムゾーンオフセットによって値が変更されます。

関連する問題