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 研究心得 取得属性的值
Nov 30 Javascript
JQery jstree 大数据量问题解决方法
Mar 09 Javascript
javascript getElementsByClassName实现代码
Oct 11 Javascript
腾讯UED 漂亮的提示信息效果代码
Sep 12 Javascript
在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
Apr 15 Javascript
深入浅析Bootstrap列表组组件
May 03 Javascript
JS脚本实现动态给标签控件添加事件的方法
Jun 02 Javascript
js 获取范围内的随机数实例代码
Aug 02 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
Jun 13 Javascript
JavaScript对象_动力节点Java学院整理
Jun 23 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
Oct 01 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
Jul 16 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图像处理类库及演示分享
2015/05/17 PHP
Yii2实现log输出到file及database的方法
2016/11/12 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
2010/12/03 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
微信小程序(应用号)简单实例应用及实例详解
2016/09/26 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
Vue2.0使用过程常见的一些问题总结学习
2017/04/10 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
详解在vue-test-utils中mock全局对象
2018/11/07 Javascript
Vue实现简单分页器
2018/12/29 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
layui实现数据表格table分页功能(ajax异步)
2019/07/27 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
Python实现telnet服务器的方法
2015/07/10 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
Django 静态文件配置过程详解
2019/07/23 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
工程造价与管理专业应届生求职信
2013/11/23 职场文书
五年级数学教学反思
2014/02/11 职场文书
关于孝道的演讲稿
2014/05/21 职场文书
红色旅游心得体会
2014/09/03 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
见习报告格式要求
2014/11/04 职场文书
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
2023/05/08 MySQL