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将数据库中的TEXT类型数据动态赋值到TEXTAREA中
Apr 20 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
Apr 12 Javascript
js动态移动滚动条至底部示例代码
Apr 24 Javascript
简介JavaScript中getUTCMonth()方法的使用
Jun 10 Javascript
javascript中的previousSibling和nextSibling的正确用法
Sep 16 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
Jan 28 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
Oct 27 Javascript
canvas学习之API整理笔记(一)
Dec 29 Javascript
JS匹配日期和时间的正则表达式示例
May 12 Javascript
JS面向对象的程序设计相关知识小结
May 26 Javascript
Vue组件的使用及个人理解与介绍
Feb 09 Javascript
Vue 数据绑定的原理分析
Nov 16 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
天津市收音机工业发展史
2021/03/04 无线电
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
2008/11/14 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
简单的JavaScript互斥锁分享
2014/02/02 Javascript
javascript省市级联功能实现方法实例详解
2015/10/20 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
纯js实现的积木(div层)拖动功能示例
2017/07/19 Javascript
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
Node.js net模块功能及事件监听用法分析
2019/01/05 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
JS开发自己的类库实例分析
2019/08/28 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
js实现炫酷光感效果
2020/09/05 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
Python中每次处理一个字符的5种方法
2015/05/21 Python
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
2019/02/20 Python
Python OpenCV调用摄像头检测人脸并截图
2020/08/20 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
Python list运算操作代码实例解析
2020/01/20 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
法拉利英国精品店:Ferraris Boutique UK
2019/07/20 全球购物
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
店长岗位职责
2013/11/21 职场文书
公司市场部岗位职责
2013/12/02 职场文书
售后主管岗位职责
2013/12/08 职场文书
让生命充满爱演讲稿
2014/05/10 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
Python中的协程(Coroutine)操作模块(greenlet、gevent)
2022/05/30 Python