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加密解密7种方法总结分析
Oct 07 Javascript
jquery uaMatch源代码
Feb 14 Javascript
无限树Jquery插件zTree的常用功能特性总结
Sep 11 Javascript
使用jquery插件qrcode生成二维码
Oct 22 Javascript
jQuery自定义数值抽奖活动代码
Jun 11 Javascript
js仿拉勾网首页穿墙广告效果
Mar 08 Javascript
JavaScript基于replace+正则实现ES6的字符串模版功能
Apr 25 Javascript
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
Apr 28 jQuery
Vue js 的生命周期(看了就懂)(推荐)
Mar 29 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
Jul 28 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
Oct 31 Javascript
vue3使用vuedraggable实现拖拽功能
Apr 06 Vue.js
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
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
web server使用php生成web页面的三种方法总结
2013/10/28 PHP
图解找出PHP配置文件php.ini的路径的方法
2014/08/20 PHP
PHP7常量数组用法分析
2016/09/26 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
ajax与302响应代码测试
2013/10/23 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
2016/07/21 Javascript
详解从angular-cli:1.0.0-beta.28.3升级到@angular/cli:1.0.0
2017/05/22 Javascript
js实现鼠标点击页面弹出自定义文字效果
2019/12/24 Javascript
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
python实现将视频按帧读取到自定义目录
2019/12/10 Python
Pytorch 之修改Tensor部分值方式
2019/12/27 Python
Django中的session用法详解
2020/03/09 Python
在python image 中实现安装中文字体
2020/05/16 Python
Python OrderedDict字典排序方法详解
2020/05/21 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
2021/01/28 Python
HTML5中meta属性的使用方法
2016/02/29 HTML / CSS
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
英国在线珠宝店:The Jewel Hut
2017/03/20 全球购物
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
英智兴达软件测试笔试题
2016/10/12 面试题
九年级体育教学反思
2014/01/23 职场文书
给老婆的婚前保证书
2014/02/01 职场文书
人力资源经理的岗位职责
2014/03/02 职场文书
2014年道德讲堂实施方案
2014/03/05 职场文书
人民调解协议书范本
2014/10/11 职场文书
师德师风整改措施
2014/10/24 职场文书
质检员工作总结2015
2015/04/25 职场文书
《合作意向书》怎么写?
2019/08/20 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python