1. ホーム
  2. javascript

[解決済み] DST(サマータイム)が適用されているかどうか、適用されている場合のオフセットを確認するには?

2022-04-20 18:29:29

質問事項

これは私のJSコードの一部で、これが必要なのです。

var secDiff = Math.abs(Math.round((utc_date-this.premiere_date)/1000));
this.years = this.calculateUnit(secDiff,(86400*365));
this.days = this.calculateUnit(secDiff-(this.years*(86400*365)),86400);
this.hours = this.calculateUnit((secDiff-(this.years*(86400*365))-(this.days*86400)),3600);
this.minutes = this.calculateUnit((secDiff-(this.years*(86400*365))-(this.days*86400)-(this.hours*3600)),60);
this.seconds = this.calculateUnit((secDiff-(this.years*(86400*365))-(this.days*86400)-(this.hours*3600)-(this.minutes*60)),1);

datetimeを"ago"で取得したいのですが、DSTが使用されていると、日付が1時間ずれてしまいます。サマータイムが適用されているかどうかを確認する方法がわかりません。

サマータイムの開始と終了を知るにはどうしたらいいですか?

解決方法は?

このコードでは getTimezoneOffset より大きい の値は、標準時とサマータイム時で異なります。このように、標準時の予想出力を決定し、与えられた日付の出力が同じ(標準)か小さい(サマータイム)かを比較するのである。

以下のことに注意してください。 getTimezoneOffset は以下を返します。 ポジティブ ゾーン別分数 ウエスト のUTCで、通常、次のように記述されます。 ネガティヴ 時間(UTCより遅れているため)。例えば、ロサンゼルスは UTC-8h を標準装備しています。 UTC-7h DST getTimezoneOffset 収益 480 (プラス480分)12月(冬、標準時)には、むしろ -480 . を返します。 ネガティヴ 東半球の数字(例えば -600 冬のシドニーのために、これは"先"であるにもかかわらず、( UTC+10h ).

Date.prototype.stdTimezoneOffset = function () {
    var jan = new Date(this.getFullYear(), 0, 1);
    var jul = new Date(this.getFullYear(), 6, 1);
    return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
}

Date.prototype.isDstObserved = function () {
    return this.getTimezoneOffset() < this.stdTimezoneOffset();
}

var today = new Date();
if (today.isDstObserved()) { 
    alert ("Daylight saving time!");
}