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自定义的addClass()方法
May 28 Javascript
javascript面向对象之this关键词用法分析
Jan 13 Javascript
jQuery()方法的第二个参数详解
Apr 29 Javascript
bootstrap布局中input输入框右侧图标点击功能
May 16 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
Sep 02 Javascript
easyUI combobox实现联动效果
Jan 17 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
May 03 Javascript
基于VUE.JS的移动端框架Mint UI的使用
Oct 11 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
Mar 03 Javascript
Vue数据绑定简析小结
May 07 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
May 16 Javascript
vue-model实现简易计算器
Aug 17 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防注入,表单提交值转义的实现详解
2013/06/10 PHP
php读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
PHP实现变色验证码实例
2014/01/06 PHP
PHP提高编程效率的20个要点
2015/09/23 PHP
微信支付开发发货通知实例
2016/07/12 PHP
PHP Oauth授权和本地加密实现方法
2016/08/12 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
js 深拷贝函数
2008/12/04 Javascript
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
2012/07/31 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
vue-cli中的webpack配置详解
2017/09/25 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
解决vant中 tab栏遇到的坑 van-tabs
2020/11/04 Javascript
Python set集合类型操作总结
2014/11/07 Python
把MySQL表结构映射为Python中的对象的教程
2015/04/07 Python
Python程序中设置HTTP代理
2016/11/06 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
python使用zip将list转为json的方法
2018/12/31 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
纪伊国屋新加坡网上书店:Kinokuniya新加坡
2017/12/29 全球购物
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
30年同学聚会邀请函
2014/01/25 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书
员工考核评语大全
2014/04/26 职场文书
十周年庆典策划方案
2014/06/03 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
客户答谢会致辞
2015/07/30 职场文书
党员读书活动心得体会
2016/01/14 职场文书
《神奇的鸟岛》教学反思
2016/02/22 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript