复制代码代码如下:
<! Doctype html>
<html>
<head>
<title> calculadora DST </title>
<script type = "text/javascript">
função displaydstswitchdates ()
{
var ano = new Date (). getyear ();
se (ano <1000)
ano += 1900;
var FirstSwitch = 0;
var secundSwitch = 0;
var lastoffset = 99;
// percorre todos os meses do ano atual
para (i = 0; i <12; i ++)
{
// busca o valor do fuso horário para o mês
var newDate = new Date (date.utc (ano, i, 0, 0, 0, 0, 0));
var tz = -1 * newDate.getTimeZoneOffSet () / 60;
// Capture quando ocorre uma mudança de timzezone
if (tz> lastoffset)
FirstSwitch = I-1;
else if (tz <lastoffset)
SecondSwitch = I-1;
lastOffset = tz;
}
// vai descobrir a data/hora de ocorrências um minuto antes
// um ajuste de DST ocorre
var SecondDstdate = finddstswitchdate (ano, SecondSwitch);
var FirstDstdate = finddstswitchdate (ano, FirstSwitch);
if (primeirodstdate == null && SecondDstdate == null)
Retornar 'A economia do horário de verão não é observada em seu fuso horário.';
outro
Retornar 'Último minuto antes da alteração do DST ocorrer em' +
ano + ':' + FirstDstdate + 'e' + SecondDstdate;
}
função finddstswitchdate (ano, mês)
{
// Defina a data de início
var com base = new Date (date.utc (ano, mês, 0, 0, 0, 0, 0));
var mudey = 0;
var chanGemInute = -1;
var vaseffset = -1 * baseado.getTimeZoneOffSet () / 60;
var dstdate;
// loop para descobrir o dia exato em que ocorre o ajuste do fuso horário
para (dia = 0; dia <50; dia ++)
{
var tmpdate = nova data (data.utc (ano, mês, dia, 0, 0, 0, 0));
var tmpoffset = -1 * tmpdate.getTimeZoneOffSet () / 60;
// Verifique se o fuso horário mudou de um dia para o próximo
if (tmpoffset! = bSharoffset)
{
var minutos = 0;
mudouy = dia;
// backup um dia e use o deslocamento
tmpdate = nova data (data.utc (ano, mês, dia-1, 0, 0, 0, 0));
tmpoffset = -1 * tmpdate.getTimeZoneOffSet () / 60;
// Conte as atas até que ocorra um chnage do fuso horário
while (ChanGEMinute == -1)
{
tmpdate = nova data (data.utc (ano, mês, dia-1, 0, minutos, 0, 0));
tmpoffset = -1 * tmpdate.getTimeZoneOffSet () / 60;
// determinar o minuto exato em que o fuso horário muda
// ocorre
if (tmpoffset! = bSharoffset)
{
// backup um minuto para obter a data/hora apenas
// antes de uma mudança de fuso horário ocorrer
tmpoffset = new Date (date.utc (ano, mês,
dia-1, 0, minutos-1, 0, 0));
ChanGEMinute = minutos;
quebrar;
}
outro
minutos ++;
}
// Adicione um mês (para exibição) desde que JavaScript contagens
// meses de 0 a 11
dstdate = tmpoffset.getMonth () + 1;
// PoD o mês conforme necessário
if (dstdate <10) dstdate = "0" + dstdate;
// Adicione o dia e o ano
dstdate + = '/' + tmpoffset.getDate () + '/' + ano + '';
// Capture o carimbo de hora
tmpdate = nova data (data.utc (ano, mês,
dia-1, 0, minutos-1, 0, 0));
dstdate += tmpdate.totimestring (). split ('') [0];
retornar dstdate;
}
}
}
</script>
</head>
<Body>
<script type = "text/javascript">
document.write ("data atual /hora:" + new Date () + "<r />");
document.write (displaydstswitchdates ());
</script>
</body>
</html>