手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >js获得当前时区夏令时发生和终止的时间代码
js获得当前时区夏令时发生和终止的时间代码
摘要:复制代码代码如下:DSTCalculatorfunctionDisplayDstSwitchDates(){varyear=newDate(...

复制代码 代码如下:

<!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获得当前时区夏令时发生和终止的时间代码】相关文章:

解析Node.js基于模块和包的代码部署方式

获得当前页面URL地址的三个JS代码

jquery.validate使用时遇到的问题

JavaScript AOP编程实例

网页里控制图片大小的相关代码

些很实用且必用的小脚本代码

日历-指定日期的新闻

JavaScript实现广告的关闭与显示效果实例

Javascript技术栈中的四种依赖注入小结

浅谈javascript事件取消和阻止冒泡

精品推荐
分类导航