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 短路法代码精简
Aug 20 Javascript
JavaScript中常见陷阱小结
Apr 27 Javascript
最常用的12种设计模式小结
Aug 09 Javascript
Jquery 选中表格一列并对表格排序实现原理
Dec 15 Javascript
jquery 循环显示div的示例代码
Oct 18 Javascript
jQuery的ready方法详解
Nov 27 Javascript
jQuery实现Twitter的自动文字补齐特效
Nov 28 Javascript
js获取页面description的方法
May 21 Javascript
JavaScript动态提示输入框输入字数的方法
Jul 27 Javascript
浅谈javascript中关于日期和时间的基础知识
Jul 13 Javascript
JavaScript面试开发常用的知识点总结
Aug 08 Javascript
jQuery复合事件结合toggle()方法的用法示例
Jun 10 jQuery
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 不同编码下的字符串长度区分
2009/09/26 PHP
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
php使用pack处理二进制文件的方法
2014/07/03 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
ZendFramework2连接数据库操作实例
2017/04/18 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
javascript闭包的理解和实例
2010/08/12 Javascript
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
Node.js制作简单聊天室
2017/01/12 Javascript
bootstrap select下拉搜索插件使用方法详解
2017/11/23 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
对vue中methods互相调用的方法详解
2018/08/30 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
jquery实现的分页显示功能示例
2019/08/23 jQuery
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
2014/01/19 Python
python九九乘法表的实例
2017/09/26 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
python dict 相同key 合并value的实例
2019/01/21 Python
python实现PID算法及测试的例子
2019/08/08 Python
python2和python3实现在图片上加汉字的方法
2019/08/22 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
生物制药专业自我鉴定
2014/02/19 职场文书
尊老爱亲美德少年事迹材料
2014/08/14 职场文书
医院合作意向书范本
2015/05/08 职场文书
致运动员赞词
2015/07/22 职场文书