夏令時計算器
函數DisplayDstSwitchDates()
{
varyear = new Date ().getYear();
如果(年份年份= 1900;
varfirstSwitch = 0;
var SecondSwitch = 0;
var 最後偏移;
// 循環遍歷當年的每個月
for (i = 0; i {
// 取得該月的時區值
var newDate = new Date(Date.UTC(年, i, 0, 0, 0, 0, 0));
var tz = -1 * newDate.getTimezoneOffset() / 60;
//當timzezone 改變時捕獲
if (tz > lastOffset)
firstSwitch = i-1;
else if (tz secondSwitch = i-1;
Offset = tz;
}
// 計算出在
// DST 調整發生前一分鐘發生的日期/時間
var secondaryDstDate = FindDstSwitchDate(year, secondarySwitch); varfirstDstDate = FindDstSwitchDate(year,firstSwitch);
if (firstDstDate == null && secondaryDstDate == null)
return '您所在時區未遵守夏令時間。 ';
else
return '在“
year”發生夏令時更改之前的最後一分鐘:“firstDstDate”和“secondDstDate”;
}
function FindDstSwitchDate( , Month)
{
// 設定開始日期
var baseDate = new Date(Date.UTC(year, Month, 0, 0) , 0, 0, 0));
var 更改日期= 0;
var 變化分鐘= -1;
var baseOffset = -1 * baseDate.getTimezoneOffset() / 60;
var dstDate;
// 搜尋循環時區調整發生時區調整發生的確切日期
for (day = 0; day {
var tmpDate = new Date(Date.UTC (年、月、日、0、0、0、0)) ;
var tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60;
// 檢查時區是否從某一天改為下一天
if (tmpOffset != baseOffset>{🎜>{
var 分鐘= 0;
changeDay = 天;
// 備份一天並取得偏移量
tmpDate = new Date(Date.UTC(year,month,day-1, 0, 0, 0, 0));
tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60;
// 計算時區變更發生前的分鐘
while (
// 計算時區變更發生前的分鐘
while (changeMinute == - 1)
{
tmpDate = new Date(Date.UTC(year,month,day-1) , 0, 分鐘, 0, 0));
tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60;
// 確定時區變更的確切分鐘
// 發生
if (tmpOffset != baseOffset)
{
// 備份一分鐘以取得日期/
// 時區變更發生之前的時間
tmpOffset = new Date(Date.UTC(year, Month,
day-1, 0, 分鐘-1, 0, 0));
changeMinute =分鐘;
分鐘;
}
其他
分鐘;
}
// 增加月份(用於顯示),因為JavaScript 計數
// 從0到11 的月份
dstDate = tmpOffset.getMonth() 1;
// 根據需要填充月份
if (dstDate
// 新增日期和年份
dstDate = '/' tmpOffset.getDate() '/' 年' ';
// 捕捉時間戳
tmpDate = new Date(Date.UTC(年, 月,
day-1, 0, 分鐘-1, 0, 0));
dstDate = tmpDate.toTimeString().split(' ')[0];
返回dstDate;
}
}
}
頭>
document .write("目前日期/時間:" new Date() "
");
document.write(DisplayDstSwitchDates());
腳本>
身體>