js에서 현재 시간대 여름철 발생 및 종료 시간 코드 가져오기

4429 단어
 
  



DST Calculator
<br> <br>function DisplayDstSwitchDates() <br>{ <br>var year = new Date().getYear(); <br>if (year < 1000) <br>year += 1900; <br> <br>var firstSwitch = 0; <br>var secondSwitch = 0; <br>var lastOffset = 99; <br> <br>// Loop through every month of the current year <br>for (i = 0; i < 12; i++) <br>{ <br>// Fetch the timezone value for the month <br>var newDate = new Date(Date.UTC(year, i, 0, 0, 0, 0, 0)); <br>var tz = -1 * newDate.getTimezoneOffset() / 60; <br> <br>// Capture when a timzezone change occurs <br>if (tz > lastOffset) <br>firstSwitch = i-1; <br>else if (tz < lastOffset) <br>secondSwitch = i-1; <br> <br>lastOffset = tz; <br>} <br> <br>// Go figure out date/time occurences a minute before <br>// a DST adjustment occurs <br>var secondDstDate = FindDstSwitchDate(year, secondSwitch); <br>var firstDstDate = FindDstSwitchDate(year, firstSwitch); <br> <br>if (firstDstDate == null && secondDstDate == null) <br>return 'Daylight Savings is not observed in your timezone.'; <br>else <br>return 'Last minute before DST change occurs in ' + <br>year + ': ' + firstDstDate + ' and ' + secondDstDate; <br>} <br> <br>function FindDstSwitchDate(year, month) <br>{ <br>// Set the starting date <br>var baseDate = new Date(Date.UTC(year, month, 0, 0, 0, 0, 0)); <br>var changeDay = 0; <br>var changeMinute = -1; <br>var baseOffset = -1 * baseDate.getTimezoneOffset() / 60; <br>var dstDate; <br> <br>// Loop to find the exact day a timezone adjust occurs <br>for (day = 0; day < 50; day++) <br>{ <br>var tmpDate = new Date(Date.UTC(year, month, day, 0, 0, 0, 0)); <br>var tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60; <br> <br>// Check if the timezone changed from one day to the next <br>if (tmpOffset != baseOffset) <br>{ <br>var minutes = 0; <br>changeDay = day; <br> <br>// Back-up one day and grap the offset <br>tmpDate = new Date(Date.UTC(year, month, day-1, 0, 0, 0, 0)); <br>tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60; <br> <br>// Count the minutes until a timezone chnage occurs <br>while (changeMinute == -1) <br>{ <br>tmpDate = new Date(Date.UTC(year, month, day-1, 0, minutes, 0, 0)); <br>tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60; <br> <br>// Determine the exact minute a timezone change <br>// occurs <br>if (tmpOffset != baseOffset) <br>{ <br>// Back-up a minute to get the date/time just <br>// before a timezone change occurs <br>tmpOffset = new Date(Date.UTC(year, month, <br>day-1, 0, minutes-1, 0, 0)); <br>changeMinute = minutes; <br>break; <br>} <br>else <br>minutes++; <br>} <br> <br>// Add a month (for display) since JavaScript counts <br>// months from 0 to 11 <br>dstDate = tmpOffset.getMonth() + 1; <br> <br>// Pad the month as needed <br>if (dstDate < 10) dstDate = "0" + dstDate; <br> <br>// Add the day and year <br>dstDate += '/' + tmpOffset.getDate() + '/' + year + ' '; <br> <br>// Capture the time stamp <br>tmpDate = new Date(Date.UTC(year, month, <br>day-1, 0, minutes-1, 0, 0)); <br>dstDate += tmpDate.toTimeString().split(' ')[0]; <br>return dstDate; <br>} <br>} <br>} <br> <br>


<br>document.write("Current date/time: " + new Date() + "<br />"); <br>document.write(DisplayDstSwitchDates()); <br>


좋은 웹페이지 즐겨찾기