js獲得當前時區夏令時發生和終止的時間代碼

來源:互聯網
上載者:User

js獲得當前時區夏令時發生和終止的時間代碼

 這篇文章主要介紹了js獲得當前時區夏令時發生和終止的時間代碼,需要的朋友可以參考下

代碼如下:

<!DOCTYPE html> 

<html> 

<head> 

<title>DST Calculator</title> 

<script type="text/javascript"> 

 

function DisplayDstSwitchDates() 

var year = new Date().getYear(); 

if (year < 1000) 

year += 1900; 

 

var firstSwitch = 0; 

var secondSwitch = 0; 

var lastOffset = 99; 

 

// Loop through every month of the current year 

for (i = 0; i < 12; i++) 

// Fetch the timezone value for the month 

var newDate = new Date(Date.UTC(year, i, 0, 0, 0, 0, 0)); 

var tz = -1 * newDate.getTimezoneOffset() / 60; 

 

// Capture when a timzezone change occurs 

if (tz > lastOffset) 

firstSwitch = i-1; 

else if (tz < lastOffset) 

secondSwitch = i-1; 

 

lastOffset = tz; 

 

// Go figure out date/time occurences a minute before 

// a DST adjustment occurs 

var secondDstDate = FindDstSwitchDate(year, secondSwitch); 

var firstDstDate = FindDstSwitchDate(year, firstSwitch); 

 

if (firstDstDate == null && secondDstDate == null) 

return 'Daylight Savings is not observed in your timezone.'; 

else 

return 'Last minute before DST change occurs in ' + 

year + ': ' + firstDstDate + ' and ' + secondDstDate; 

 

function FindDstSwitchDate(year, month) 

// Set the starting date 

var baseDate = new Date(Date.UTC(year, month, 0, 0, 0, 0, 0)); 

var changeDay = 0; 

var changeMinute = -1; 

var baseOffset = -1 * baseDate.getTimezoneOffset() / 60; 

var dstDate; 

 

// Loop to find the exact day a timezone adjust occurs 

for (day = 0; day < 50; day++) 

var tmpDate = new Date(Date.UTC(year, month, day, 0, 0, 0, 0)); 

var tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60; 

 

// Check if the timezone changed from one day to the next 

if (tmpOffset != baseOffset) 

var minutes = 0; 

changeDay = day; 

 

// Back-up one day and grap the offset 

tmpDate = new Date(Date.UTC(year, month, day-1, 0, 0, 0, 0)); 

tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60; 

 

// Count the minutes until a timezone chnage occurs 

while (changeMinute == -1) 

tmpDate = new Date(Date.UTC(year, month, day-1, 0, minutes, 0, 0)); 

tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60; 

 

// Determine the exact minute a timezone change 

// occurs 

if (tmpOffset != baseOffset) 

// Back-up a minute to get the date/time just 

// before a timezone change occurs 

tmpOffset = new Date(Date.UTC(year, month, 

day-1, 0, minutes-1, 0, 0)); 

changeMinute = minutes; 

break; 

else 

minutes++; 

 

// Add a month (for display) since JavaScript counts 

// months from 0 to 11 

dstDate = tmpOffset.getMonth() + 1; 

 

// Pad the month as needed 

if (dstDate < 10) dstDate = "0" + dstDate; 

 

// Add the day and year 

dstDate += '/' + tmpOffset.getDate() + '/' + year + ' '; 

 

// Capture the time stamp 

tmpDate = new Date(Date.UTC(year, month, 

day-1, 0, minutes-1, 0, 0)); 

dstDate += tmpDate.toTimeString().split(' ')[0]; 

return dstDate; 

 

</script> 

</head> 

<body> 

<script type="text/javascript"> 

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

document.write(DisplayDstSwitchDates()); 

</script> 

</body> 

</html> 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.