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 函数调用的对象和方法
Jul 01 Javascript
利用js实现遮罩以及弹出可移动登录窗口
Jul 08 Javascript
jQuery实现简单二级下拉菜单
Apr 12 Javascript
js实现动态创建的元素绑定事件
Jul 19 Javascript
通过jquery实现页面的动画效果(实例代码)
Sep 18 Javascript
深入理解vue-loader如何使用
Jun 06 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
Dec 15 Javascript
一个小时快速搭建微信小程序的方法步骤
Apr 15 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
May 15 Javascript
扫微信小程序码实现网站登陆实现解析
Aug 20 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
Jul 21 Javascript
如何将Node.js中的回调转换为Promise
Nov 10 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的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
php判断输入是否是纯数字,英文,汉字的方法
2015/03/05 PHP
PHP count()函数讲解
2019/02/03 PHP
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
JavaScript 学习笔记之操作符
2015/01/14 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
2016/05/05 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
canvas实现环形进度条效果
2017/03/23 Javascript
js事件机制----捕获与冒泡机制实例分析
2020/05/22 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
VUE动态生成word的实现
2020/07/26 Javascript
JavaScript实现鼠标移入随机变换颜色
2020/11/24 Javascript
python处理中文编码和判断编码示例
2014/02/26 Python
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
python计算n的阶乘的方法代码
2019/10/25 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
用css3实现转换过渡和动画效果
2020/03/13 HTML / CSS
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
类如何去实现接口
2013/12/19 面试题
先进党支部事迹材料
2014/01/13 职场文书
岗位说明书标准范本
2014/07/30 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
2015年党支部书记工作总结
2015/05/21 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang
教你怎么用python selenium实现自动化测试
2021/05/27 Python