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 相关文章推荐
最新的10款jQuery内容滑块插件分享
Sep 18 Javascript
JQuery中SetTimeOut传参问题探讨
May 10 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
Nov 28 Javascript
jquery实现预览提交的表单代码分享
May 21 Javascript
JavaScript中的类数组对象介绍
Dec 30 Javascript
AngularJS Phonecat实例讲解
Nov 21 Javascript
详解AngularJS 模块化
Jun 14 Javascript
react-native封装插件swiper的使用方法
Mar 20 Javascript
JavaScript实现的DOM绘制柱状图效果示例
Aug 08 Javascript
JavaScript实现轮播图片完整代码
Mar 07 Javascript
vue-socket.io接收不到数据问题的解决方法
May 13 Javascript
详解JavaScript 高阶函数
Sep 14 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 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
[原创]php正则删除img标签的方法示例
2017/05/27 PHP
Prototype使用指南之dom.js
2007/01/10 Javascript
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
Jquery实现自定义弹窗示例
2014/03/12 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
详解Angular操作cookies方法
2018/06/01 Javascript
利用Node.js批量抓取高清妹子图片实例教程
2018/08/02 Javascript
小程序实现自定义导航栏适配完美版
2019/04/02 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
python解析xml文件实例分享
2013/12/04 Python
python发腾讯微博代码分享
2014/01/10 Python
深入理解python中的atexit模块
2017/03/07 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
pycharm激活码有效到2020年11月底
2020/09/18 Python
Python中文分词库jieba,pkusegwg性能准确度比较
2020/02/11 Python
使用python对excel表格处理的一些小功能
2021/01/25 Python
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
交通事故和解协议书
2014/09/25 职场文书
孔子观后感
2015/06/08 职场文书
Java使用JMeter进行高并发测试
2021/11/23 Java/Android
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫
MySQL中一条SQL查询语句是如何执行的
2022/04/08 MySQL
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL