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中函数声明与函数表达式
Jun 03 Javascript
jQuery替换textarea中换行的方法
Jun 10 Javascript
详解JavaScript的回调函数
Nov 20 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
Dec 23 Javascript
AngularJS中的Directive实现延迟加载
Jan 25 Javascript
JavaScript 对象详细整理总结
Sep 29 Javascript
微信小程序之选项卡的实现方法
Sep 29 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
Nov 22 Javascript
React组件refs的使用详解
Feb 09 Javascript
element-ui使用导航栏跳转路由的用法详解
Aug 22 Javascript
Angular2之二级路由详解
Aug 31 Javascript
Vant 在vue-cli 4.x中按需加载操作
Nov 05 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结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
js动态给table添加/删除tr的方法
2013/08/02 Javascript
JavaScript中的console.assert()函数介绍
2014/12/29 Javascript
每天一篇javascript学习小结(Array数组)
2015/11/11 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
jQuery 获取select选中值及清除选中状态
2016/12/13 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
vue侧边栏动态生成下级菜单的方法
2018/09/07 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
[04:41]2014DOTA2国际邀请赛 Liquid顺利突围晋级正赛
2014/07/09 DOTA
Python 的内置字符串方法小结
2016/03/15 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
Python实现将Excel转换成xml的方法示例
2018/08/25 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
CSS3实现时间轴特效
2020/11/02 HTML / CSS
迪拜航空官方网站:flydubai
2017/04/20 全球购物
给女朋友的道歉信
2014/01/10 职场文书
仓库主管岗位职责
2014/03/02 职场文书
公司接待方案
2014/03/08 职场文书
公司委托书怎么写
2014/08/02 职场文书
社区党建工作汇报材料
2014/10/27 职场文书
横店影视城导游词
2015/02/06 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
大国崛起日本观后感
2015/06/02 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
为什么MySQL不建议使用SELECT *
2022/04/03 MySQL