js获得当前时区夏令时发生和终止的时间代码

代码如下:

<!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>

(0)

相关推荐

  • JS比较两个时间大小的简单示例代码

    如下所示: 复制代码 代码如下: if (new Date(strSD.replace(/\-/g, '\/')) > new Date(strED.replace(/\-/g, '\/'))) { //开始时间大于了结束时间                alert("时间选择有误!开始日期必须小于或者等于结束时期!");                return false;}

  • 扩展JS Date对象时间格式化功能的小例子

    在自己JS代码中引入一下代码: 复制代码 代码如下: Date.prototype.format =function(format){    var o = {            "M+" : this.getMonth()+1, //month            "d+" : this.getDate(), //day            "h+" : this.getHours(), //hour            "

  • JS控制一个DIV层在指定时间内消失的方法

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>定时关闭的层<

  • js 时间格式与时间戳的相互转换示例代码

    一.时间转换时间戳 复制代码 代码如下: function transdate(endTime){ var date=new Date(); date.setFullYear(endTime.substring(0,4)); date.setMonth(endTime.substring(5,7)-1); date.setDate(endTime.substring(8,10)); date.setHours(endTime.substring(11,13)); date.setMinutes(

  • JS之Date对象和获取系统当前时间详解

    一.Date对象每天一对象,今天来看看Date对象,相对于时间大家一定很熟悉,应为以前在网站中很多地方都会遇到这样的时间特效.温故而知新,今天我们来回忆一下Date对象. 我们首先来看看他的定义:dateObj = new Date()dateObj = new Date(dateVal)dateObj = new Date(year, month, date[, hours[, minutes[, seconds[,ms]]]]) 必选项.如果是数字值,dateVal 表示指定日期与 1970

  • 纯JS实现动态时间显示代码

    复制代码 代码如下: <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title> <script language="javascript">

  • JS获取当前日期和时间的简单实例

    复制代码 代码如下: <script>var myDate = new Date();    myDate.getYear();       //获取当前年份(2位)//alert(myDate.getYear()) //2009    myDate.getFullYear();   //获取完整的年份(4位,1970-????)//alert(myDate.getFullYear()); 2009    myDate.getMonth();      //获取当前月份(0-11,0代表1月)

  • 一个简单的JS时间控件示例代码(JS时分秒时间控件)

    自己在网上找了半天没找到只有 "时分秒"的控件, 就自己做了个,发在这里方便有人用到 鼠标点击 后 的效果 SetTime.js 复制代码 代码如下: /**//************************************ 使用说明:* 首先把本控件包含到页面 * <script src="XXX/setTime.js" type="text/javascript"></script>* 控件调用函数:_Set

  • 使用js显示当前时间示例

    页面前台显示 复制代码 代码如下: <span id="clock" style="font-size:14px;"></span> js脚本 复制代码 代码如下: $(document).ready(function () {//第一种showTime();//第二种var clock = new Clock();clock.display($("#clock"));}); //显示系统当前时间处理 第一种方法 func

  • js格式化时间和js格式化时间戳示例

    复制代码 代码如下: /** * 时间对象的格式化; */Date.prototype.format = function(format) {    /*     * eg:format="YYYY-MM-dd hh:mm:ss";     */    var o = {        "M+" :this.getMonth() + 1, // month        "d+" :this.getDate(), // day        &q

  • js时间比较示例分享(日期比较)

    复制代码 代码如下: <html> <head>  <script language="javascript" type="text/javascript">   /** 日期比较 **/   function compareDate(strDate1,strDate2)   {    var date1 = new Date(strDate1.replace(/\-/g, "\/"));    var dat

  • js计算两个时间之间天数差的实例代码

    复制代码 代码如下: //判断是否为闰年function isLeapYear(year){if(year % 4 == 0 && ((year % 100 != 0) || (year % 400 == 0))){     return true;}return false;}//判断前后两个日期function validatePeriod(fyear,fmonth,fday,byear,bmonth,bday){if(fyear < byear){return true;}el

  • js获取时间(本周、本季度、本月..)

    Js代码 复制代码 代码如下: /** * 获取本周.本季度.本月.上月的开端日期.停止日期 */ var now = new Date(); //当前日期 var nowDayOfWeek = now.getDay(); //今天本周的第几天 var nowDay = now.getDate(); //当前日 var nowMonth = now.getMonth(); //当前月 var nowYear = now.getYear(); //当前年 nowYear += (nowYear <

  • JS小功能(setInterval实现图片效果显示时间)实例代码

    效果: 代码: 复制代码 代码如下: <head runat="server">    <title></title>    <script type="text/javascript">        function toDou(n) {            if (n < 10) {                return '0' + n;            }            else {

  • 页面实时更新时间的JS实例代码

    复制代码 代码如下: function startTime() {                     var today = new Date(); //定义日期对象                        var yyyy = today.getFullYear(); //通过日期对象的getFullYear()方法返回年                         var MM = today.getMonth() + 1; //通过日期对象的getMonth()方法返回年 

  • 利用js实现在浏览器状态栏显示访问者在本页停留的时间

    问题描述:在状态栏上显示 ,访问者在本页停留的 时间 (如:您在本页停留了 (如:您在本页停留了 X小时 X分 X秒) 该问题相当于是设计一个计时器,用于显示浏览者在该页面停留了多长时间.要解决该问题,我想到的主要有两种方法. 方法一:利用系统时间.即先设置一个变量,用于获取登录开始时间startTime,然后利用setTimeout()函数让页面不停的刷新,在刷新的同时,获取当前时间nowTime,然后用当前时间减去登录开始时间,即为停留时间.在此就不做详细编写.重点说下下面使用到的方法二来进

  • JS判断两个时间大小的示例代码

    如下所示: 复制代码 代码如下: function validTime(startTime,endTime){       var arr1 = startTime.split("-");       var arr2 = endTime.split("-");       var date1=new Date(parseInt(arr1[0]),parseInt(arr1[1])-1,parseInt(arr1[2]),0,0,0);        var dat

  • js中的时间转换—毫秒转换成日期时间的示例代码

    js毫秒时间转换成日期时间 复制代码 代码如下: var oldTime = (new Date("2011/11/11 20:10:10")).getTime(); //得到毫秒数 大多数是用毫秒数除以365*24*60*60&1000,这么转回去,这种方法转换太过复杂,年月日,时分秒都要不同的方法获取,而且有的年份有366天,有的365天,这么算起来就太过复杂了. 后面自己试了一个方法,居然成功了 复制代码 代码如下: var oldTime = (new Date(&qu

随机推荐