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 相关文章推荐
jquery实现的超出屏幕时把固定层变为定位层的代码
Feb 23 Javascript
jQuery无刷新切换主题皮肤实例讲解
Oct 21 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
Oct 24 Javascript
Bootstrap所支持的表单控件实例详解
May 16 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
Nov 03 Javascript
Javascript之面向对象--接口
Dec 02 Javascript
angular 动态组件类型详解(四种组件类型)
Feb 22 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
Apr 02 jQuery
Node接收电子邮件的实例代码
Jul 21 Javascript
bootstrap table插件的分页与checkbox使用详解
Jul 23 Javascript
vue实现同一个页面可以有多个router-view的方法
Sep 20 Javascript
express异步函数异常捕获示例详解
Nov 30 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/13 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
PHP+MySQL之Insert Into数据插入用法分析
2015/09/27 PHP
PHP基于自定义类随机生成姓名的方法示例
2017/08/05 PHP
js静态作用域的功能。
2006/12/25 Javascript
javascript:文字不间断向左移动的实例代码
2013/08/08 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
2013/11/26 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
jsonp跨域请求详解
2017/07/13 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
解决vue.js 数据渲染成功仍报错的问题
2018/08/25 Javascript
node app 打包工具pkg的具体使用
2019/01/17 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
在nodejs中创建child process的方法
2021/01/26 NodeJs
在Python中操作字典之clear()方法的使用
2015/05/21 Python
django model去掉unique_together报错的解决方案
2016/10/18 Python
Python3 适合初学者学习的银行账户登录系统实例
2017/08/08 Python
在Pycharm中执行scrapy命令的方法
2019/01/16 Python
Python分布式进程中你会遇到的问题解析
2019/05/28 Python
Python编程中类与类的关系详解
2019/08/08 Python
python操作链表的示例代码
2020/09/27 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
2020/11/09 Python
个人自我鉴定范文
2013/10/04 职场文书
生日宴会主持词
2014/03/20 职场文书
室内趣味活动方案
2014/08/24 职场文书
母亲节主题班会
2015/08/14 职场文书
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
2021/04/06 Python
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL