展会信息港展会大全

js获得当前时区夏令时发生和终止的时间代码
来源:互联网   发布日期:2016-01-28 12:56:16   浏览:2177次  

导读:这篇文章主要介绍了js获得当前时区夏令时发生和终止的时间代码,需要的朋友可以参考下代码如下:!DOCTYPE htmlhtmlheadtitleDST Calculator titlescript type=text javascriptfunction DisplayD ...

这篇文章主要介绍了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>

赞助本站

人工智能实验室

相关热词: 时间 js

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港