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实现带省略号的分页
Apr 27 Javascript
图片上传判断及预览脚本的效果实例
Aug 07 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
Sep 02 Javascript
jQuery基于扩展简单实现倒计时功能的方法
May 14 Javascript
Node.js 数据加密传输浅析
Nov 16 Javascript
对称加密与非对称加密优缺点详解
Feb 06 Javascript
使用jquery给新生的th绑定hover事件的实例
Feb 10 Javascript
ES6入门教程之Iterator与for...of循环详解
May 17 Javascript
Vue框架之goods组件开发详解
Jan 25 Javascript
Vue路由模块化配置的完整步骤
Aug 14 Javascript
JavaScript快速调试的两个技巧
Nov 04 Javascript
JS前端基于canvas给图片添加水印
Nov 11 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
图象函数中的中文显示
2006/10/09 PHP
谈谈PHP语法(4)
2006/10/09 PHP
PHP的FTP学习(一)
2006/10/09 PHP
PHP中$_SERVER的详细参数与说明
2008/07/29 PHP
php中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
php实现简单四则运算器
2020/11/29 PHP
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
javascript实现控制div颜色
2015/07/07 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
vue.js选中动态绑定的radio的指定项
2017/06/02 Javascript
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
vue实现记事本功能
2019/06/26 Javascript
p5.js实现动态图形临摹
2019/10/23 Javascript
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
Python获取某一天是星期几的方法示例
2017/01/17 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
python查看数据类型的方法
2019/10/12 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
python字符串替换re.sub()实例解析
2020/02/09 Python
执行Python程序时模块报错问题
2020/03/26 Python
Python读写Excel表格的方法
2021/03/02 Python
塔吉特百货公司官网:Target
2017/04/27 全球购物
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
医学毕业生自荐信
2013/10/11 职场文书
领导党性分析材料
2014/02/15 职场文书
勤俭节约演讲稿
2014/05/08 职场文书
信用卡工作证明模板
2014/09/14 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android