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操作word的参考代码
Oct 26 Javascript
js parsefloat parseint 转换函数
Jan 21 Javascript
JQuery浮动DIV提示信息并自动隐藏的代码
Aug 29 Javascript
node.js实现多图片上传实例
Jun 03 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
Sep 16 Javascript
Vue 去除路径中的#号
Apr 19 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
Apr 21 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
Jul 31 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
Dec 05 Javascript
详解webpack 最简打包结果分析
Feb 20 Javascript
js实现飞机大战小游戏
Aug 26 Javascript
vue中后端做Excel导出功能返回数据流前端的处理操作
Sep 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
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
PHP中实现crontab代码分享
2015/03/26 PHP
利用php生成验证码
2017/02/23 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
javascript 图片上一张下一张链接效果代码
2010/03/12 Javascript
理解JavaScript中的对象 推荐
2011/01/09 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
js实现下一页页码效果
2017/03/07 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
vue-cli单页应用改成多页应用配置详解
2017/07/14 Javascript
vue地区选择组件教程详解
2018/05/04 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
微信小程序实现自定义底部导航
2020/11/18 Javascript
python中的函数用法入门教程
2014/09/02 Python
python通过opencv实现批量剪切图片
2017/11/13 Python
使用python实现抓取腾讯视频所有电影的爬虫
2019/04/15 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
pyqt5中动画的使用详解
2020/04/01 Python
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
2016/12/03 HTML / CSS
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
专业销售业务员求职信
2013/11/18 职场文书
实习评语
2013/12/16 职场文书
银行办公室岗位职责
2014/03/10 职场文书
小学生评语大全
2014/04/18 职场文书
法制宣传日活动总结
2014/04/29 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
学校食品安全实施方案
2014/06/14 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
2015年毕业生自我鉴定模板
2014/09/19 职场文书
工人先锋号申报材料
2014/12/29 职场文书