<div class="codetitle"> <span><a style="CURSOR: pointer" data="30631" class="copybut" id="copybut30631" onclick="doCopy('code30631')"><u>复制代码</u></a></span>代码如下:</div> <div class="codebody" id="code30631"> <br><!DOCTYPE html> <br> <br> <br><title>DST 計算ツール</title> <br><script type="text/javascript"> <br><br>function DisplayDstSwitchDates() <br>{ <br>var year = new Date().getyear(); <br>if (年 年 = 1900; <br><br>var firstSwitch = 0; <br>var SecondSwitch = 0; <br>var lastOffset = 99; <br><br>// 現在の年の各月をループします <br>for (i = 0; i { <br>// 月のタイムゾーン値を取得します <br>var newDate = new Date(Date.UTC(年, i, 0, 0, 0, 0, 0)); <br>var tz = -1 * newDate.getTimezoneOffset() / 60; <br><br>// timzezone の変更が発生したときにキャプチャします <br>if (tz > lastOffset) <br>firstSwitch = i-1; <br>else if (tz secondSwitch = i-1; <br><br>lastOffset = tz; <br>} <br><br>// 1 分前に発生した日付/時刻を調べます <br>// DST 調整が発生する <br>var SecondDstDate = FindDstSwitchDate(year, SecondSwitch); <br>var firstDstDate = FindDstSwitchDate(年, firstSwitch); <br><br>if (firstDstDate == null && SecondDstDate == null) <br>return 'あなたのタイムゾーンでは夏時間は実施されていません。'; <br>else <br>return '' <br>年 ' に DST 変更が発生する直前の時刻: ' firstDstDate ' および ' SecondDstDate; <br>} <br><br>function FindDstSwitchDate(年, 月) <br>{ <br>// 開始日を設定します <br>varbaseDate = new Date(Date.UTC(年, 月, 0, 0 、0、0、0)); <br>varchangeDay = 0; <br>varchangeMinute = -1; <br>varbaseOffset = -1 *baseDate.getTimezoneOffset() / 60; <br>var dstDate; <br><br>// タイムゾーンの調整が行われる正確な日を見つけるループ <br>for (day = 0; day < 50; day ) <BR>{ <BR>var tmpDate = new Date(Date.UTC) (年、月、日、0、0、0、0)); <BR>var tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60; <br><br>// タイムゾーンがある日から次の日に変更されたかどうかを確認します。<BR>if (tmpOffset !=baseOffset) <BR>{ <BR>var minutes = 0; <BR>changeDay = 日; <br><br>// 1 日分をバックアップし、オフセットを把握します <BR>tmpDate = new Date(Date.UTC(year, month, day-1, 0, 0, 0, 0)); <BR>tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60; <br><br>// タイムゾーンの変更が発生するまでの分をカウントします <BR>while (changeMinute == -1) <BR>{ <BR>tmpDate = new Date(Date.UTC(year, month, day-1) 、0、分、0、0)); <BR>tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60; <br><br>// タイムゾーンの変更が発生する正確な分を決定します <BR>// <BR>if (tmpOffset !=baseOffset) <BR>{ <BR>// 日付を取得するために 1 分バックアップします/ <BR>// タイムゾーンの変更が発生する直前の時間 <BR>tmpOffset = new Date(Date.UTC(year, month, <BR>day-1, 0, minutes-1, 0, 0)); <BR>changeMinute = 分; <BR>休憩; <BR>} <BR>else <BR>分 ; <BR>} <br><br>// JavaScript は月をカウントするため (表示用) を追加します。 <BR>// 月は 0 から 11 まで <BR>dstDate = tmpOffset.getMonth() 1; <br><br>// 必要に応じて月をパディングします <BR>if (dstDate <10) dstDate = "0" dstDate; <br><br>// 日と年を追加します <BR>dstDate = '/' tmpOffset.getDate() '/' year ' '; <br><br>// タイムスタンプを取得します <BR>tmpDate = new Date(Date.UTC(year, month, <BR>day-1, 0, minutes-1, 0, 0)); <BR>dstDate = tmpDate.toTimeString().split(' ')[0]; <BR>dstDate を返します。 <BR>} <BR>} <BR>} <br><br></script> <br></head> <br> <br><script type="text/javascript"> <br>document.write("現在の日付/時刻: " new Date() "<br />"); <br>document.write(DisplayDstSwitchDates()); <br></script> <br></body> <br></html> <br> </div>