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 相关文章推荐
基于jquery的设置页面文本框 只能输入数字的实现代码
Apr 19 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
Sep 12 Javascript
jquery实现选中单选按钮下拉伸缩效果
Aug 06 Javascript
JS脚本实现动态给标签控件添加事件的方法
Jun 02 Javascript
使用jQuery调用XML实现无刷新即时聊天
Aug 07 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
Feb 14 Javascript
详解weex默认webpack.config.js改造
Jan 08 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
May 04 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
Sep 02 Javascript
基于axios 解决跨域cookie丢失的问题
Sep 26 Javascript
Layui点击图片弹框预览的实现方法
Sep 16 Javascript
JavaScript实现点击出现子菜单效果
Feb 08 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给大家讲解防刷票的一些技巧
2015/11/18 PHP
标准版Eclipse搭建PHP环境的详细步骤
2015/11/18 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
替换php字符串中的单引号为双引号的方法
2017/02/16 PHP
Avengerls vs KG BO3 第二场2.18
2021/03/10 DOTA
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
2010/12/28 Javascript
JavaScript字符串String和Array操作的有趣方法
2012/12/18 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
js单例模式的两种方案
2013/10/22 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
2017/10/25 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
Javascript中绑定click事件的四种方式介绍
2018/10/26 Javascript
基于js实现判断浏览器类型代码实例
2020/07/17 Javascript
解决iView Table组件宽度只变大不变小的问题
2020/11/13 Javascript
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
Python中的ctime()方法使用教程
2015/05/22 Python
python函数装饰器用法实例详解
2015/06/04 Python
python生成IP段的方法
2015/07/07 Python
Python操作SQLite数据库的方法详解
2017/06/16 Python
python中模块的__all__属性详解
2017/10/26 Python
Python字典遍历操作实例小结
2019/03/05 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
如何在keras中添加自己的优化器(如adam等)
2020/06/19 Python
Lovedrobe官网:英国领先的大码服装品牌
2019/09/19 全球购物
linux面试题参考答案(10)
2016/10/26 面试题
信息专业大学生自我评价分享
2014/01/17 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
门卫管理制度范本
2015/08/05 职场文书
幼儿园托班开学寄语(2016春季)
2015/12/03 职场文书
求职信如何撰写?
2019/05/22 职场文书
Matlab如何实现矩阵复制扩充
2021/06/02 Python
MySQL三种方式实现递归查询
2022/04/18 MySQL