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 相关文章推荐
(JS实现)MapBar中坐标的加密和解密的脚本
May 16 Javascript
Javascript实现CheckBox的全选与取消全选的代码
Jul 20 Javascript
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
Oct 12 Javascript
THREE.JS入门教程(5)你应当知道的十件事
Jan 24 Javascript
js验证电话号码与手机支持+86的正则表达式
Jan 23 Javascript
当jQuery1.7遇上focus方法的问题
Jan 26 Javascript
input:checkbox多选框实现单选效果跟radio一样
Jun 16 Javascript
通过隐藏iframe实现无刷新上传文件操作
Mar 16 Javascript
AngularJS 面试题集锦
Sep 06 Javascript
浅析javaScript中的浅拷贝和深拷贝
Feb 15 Javascript
利用纯JS实现像素逐渐显示的方法示例
Aug 14 Javascript
Vue循环中多个input绑定指定v-model实例
Aug 31 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的开合式多级菜单程序
2006/10/09 PHP
php面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
表单提交验证类
2006/07/14 Javascript
JS window.opener返回父页面的应用
2009/10/24 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
如何将JS的变量值传递给ASP变量
2012/12/10 Javascript
JS防止用户多次提交的简单代码
2013/08/01 Javascript
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
2014/08/27 Javascript
详解JavaScript的Polymer框架中的通知交互
2015/07/29 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
Angularjs单选框相关的示例代码
2017/08/17 Javascript
Nodejs进阶之服务端字符编解码和乱码处理
2017/09/04 NodeJs
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
在Django框架中设置语言偏好的教程
2015/07/27 Python
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
python中urlparse模块介绍与使用示例
2017/11/19 Python
python使用tornado实现简单爬虫
2018/07/28 Python
通过shell+python实现企业微信预警
2019/03/07 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
Python collections模块的使用方法
2020/10/09 Python
python实现文件分片上传的接口自动化
2020/11/19 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
css 元素选择器的简单实例
2016/05/23 HTML / CSS
如何执行一个shell程序
2012/11/23 面试题
大学总结自我鉴定
2014/01/18 职场文书
退伍老兵事迹材料
2014/01/31 职场文书
面试后的英文感谢信
2014/02/01 职场文书
群众路线教育实践活动调研报告
2014/11/03 职场文书
2014年话务员工作总结
2014/11/19 职场文书
学习nginx基础知识
2021/09/04 Servers
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python
Redis批量生成数据的实现
2022/06/05 Redis