js获得当前时区夏令时发生和终止的时间代码


Posted in Javascript onFebruary 23, 2014
<!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>
Javascript 相关文章推荐
javascript打印html内容功能的方法示例
Nov 28 Javascript
jquery清空表单数据示例分享
Feb 13 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
Mar 05 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
Apr 24 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
Jan 26 Javascript
一道常被人轻视的web前端常见面试题(JS)
Feb 15 Javascript
BootStrap daterangepicker 双日历控件
Jun 02 Javascript
分享19个JavaScript 有用的简写写法
Jul 07 Javascript
Vue父组件调用子组件事件方法
Feb 23 Javascript
浅谈Vue CLI 3结合Lerna进行UI框架设计
Apr 14 Javascript
浅析JS中NEW的实现原理及重写
Feb 20 Javascript
Vue.js中Line第三方登录api的实现代码
Jun 29 Javascript
js 金额格式化来回转换示例
Feb 23 #Javascript
js实现连个数字相加而不是拼接的方法
Feb 23 #Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
Feb 23 #Javascript
用JQuery实现全选与取消的两种简单方法
Feb 22 #Javascript
jquery实现checkbox 全选/全不选的通用写法
Feb 22 #Javascript
防止jQuery ajax Load使用缓存的方法小结
Feb 22 #Javascript
jquery中load方法的用法及注意事项说明
Feb 22 #Javascript
You might like
php中计算未知长度的字符串哪个字符出现的次数最多的代码
2012/08/14 PHP
php页面消耗内存过大的处理办法
2013/03/18 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
php上传文件常见问题总结
2015/02/03 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
php魔术方法功能与用法实例分析
2016/10/19 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
jquery 年会抽奖程序
2011/12/22 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
addEventListener 的用法示例介绍
2014/05/07 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
fetch 使用及如何接收JS传值
2017/11/11 Javascript
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
jquery实现搜索框功能实例详解
2018/07/23 jQuery
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
vue-cli3单页构建大型项目方案
2020/04/07 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
Vue使用路由钩子拦截器beforeEach和afterEach监听路由
2020/11/16 Javascript
Python splitlines使用技巧
2008/09/06 Python
python django 访问静态文件出现404或500错误
2017/01/20 Python
Python使用三种方法实现PCA算法
2017/12/12 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
parser.add_argument中的action使用
2020/04/20 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
2020/09/30 Python
python中str内置函数用法总结
2020/12/27 Python
自荐信的五个重要部分
2013/10/29 职场文书
物资采购方案
2014/06/12 职场文书
秋冬农业生产标语
2014/10/09 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书