<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><html> <br><머리> <br><title>DST 계산기</title> <br><script type="text/javascript"> <br><br>function DisplayDstSwitchDates() <br>{ <br>var year = new Date().getYear(); <br>if (연도 < 1000) <BR>연도 = 1900; <br><br>var firstSwitch = 0; <BR>var secondSwitch = 0; <BR>var lastOffset = 99; <br><br>// 올해의 모든 월을 반복 <BR>for (i = 0; i < 12; i ) <BR>{ <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 < lastOffset) <BR>secondSwitch = i-1; <br><br>lastOffset = tz; <BR>} <br><br>// <BR>// DST 조정이 발생하기 1분 전에 날짜/시간이 발생하는지 알아보세요. <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>var baseDate = new Date(Date.UTC(년, 월, 0, 0 , 0, 0, 0)); <BR>varchangeDay = 0; <BR>varchangeMinute = -1; <BR>var baseOffset = -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>// 하루를 백업하고 오프셋을 파악합니다 <BR>tmpDate = new Date(Date.UTC(년, 월, 일-1, 0, 0, 0, 0)); <BR>tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60; <br><br>// 시간대 변경이 발생할 때까지 분을 계산합니다. <BR>while (changeMinute == -1) <BR>{ <BR>tmpDate = new Date(Date.UTC(년, 월, 일-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(년, 월, <BR>일-1, 0, 분-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() '/' 연도 ' '; <br><br>// 타임스탬프 캡처 <BR>tmpDate = new Date(Date.UTC(년, 월, <BR>일-1, 0, 분-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>