复制代码代码如下:
<! Doctype html>
<html>
<Evista>
<title> calculadora dst </title>
<script type = "text/javaScript">
función displayDstSwitchDates ()
{
var año = nueva fecha (). getyear ();
if (año <1000)
año += 1900;
var FirstSwitch = 0;
var Secondswitch = 0;
var lastoffset = 99;
// recorre cada mes del año en curso
para (i = 0; i <12; i ++)
{
// obtiene el valor de la zona horaria para el mes
var newdate = new Date (date.utc (año, i, 0, 0, 0, 0, 0));
var tz = -1 * newdate.gettimezoneOffset () / 60;
// captura cuando ocurre un cambio de timzzone
if (tz> lastoffset)
FirstSwitch = I-1;
else If (tz <Lastoffset)
SecondSwitch = I-1;
LastOffSet = tz;
}
// ir a encontrar la fecha/hora ocurrencias un minuto antes
// ocurre un ajuste DST
var SECTDSTDATE = FindDStSwitchDate (año, SecondSwitch);
var FirstDStDate = FindDStSwitchDate (año, FirstSwitch);
if (firstDStDate == NULL && SCUBEDSTDATE == NULL)
regresar 'El ahorro de luz del día no se observa en su zona horaria';
demás
regresar 'Último minuto antes de que ocurra el cambio DST en' +
año + ':' + FirstDStdate + 'y' + SecondDstdate;
}
función finddstswitchdate (año, mes)
{
// Establecer la fecha de inicio
var basado = nueva fecha (date.utc (año, mes, 0, 0, 0, 0, 0));
var cambiay = 0;
var changeminute = -1;
var baseffset = -1 * basado.gettimezoneOffset () / 60;
var dstdate;
// bucle para encontrar el día exacto que ocurre un ajuste de zona horaria
para (día = 0; día <50; día ++)
{
var tmpdate = nueva fecha (date.utc (año, mes, día, 0, 0, 0, 0));
var tmpoffset = -1 * tmpdate.gettimezoneOffset () / 60;
// Compruebe si la zona horaria cambió de un día al siguiente
if (tmpoffset! = baseffset)
{
VAR minutos = 0;
cambiando = día;
// copia de seguridad un día y upra el desplazamiento
tmpdate = nueva fecha (date.utc (año, mes, día-1, 0, 0, 0, 0));
tmpoffset = -1 * tmpdate.gettimezoneOffset () / 60;
// Cuenta las actas hasta que ocurra un ritmo de zona horaria
mientras (Changeminute == -1)
{
tmpdate = nueva fecha (date.utc (año, mes, día-1, 0, actas, 0, 0));
tmpoffset = -1 * tmpdate.gettimezoneOffset () / 60;
// Determinar el minuto exacto un cambio de zona horaria
// ocurre
if (tmpoffset! = baseffset)
{
// copia de seguridad un minuto para obtener la fecha/hora solo
// antes de que ocurra un cambio de zona horaria
tmpoffset = nueva fecha (date.utc (año, mes,
día-1, 0, minutos-1, 0, 0));
Changeminute = minutos;
romper;
}
demás
minutos ++;
}
// Agregar un mes (para visualización) ya que JavaScript cuenta
// meses de 0 a 11
dstdate = tmpoffset.getMonth () + 1;
// Padera el mes según sea necesario
if (dstdate <10) dstdate = "0" + dstdate;
// Agregar el día y el año
dstdate + = '/' + tmpoffset.getDate () + '/' + año + '';
// captura la marca de tiempo
tmpdate = nueva fecha (date.utc (año, mes,
día-1, 0, minutos-1, 0, 0));
dstdate += tmpdate.totimeTring (). Split ('') [0];
devolver dstdate;
}
}
}
</script>
</ablo>
<Body>
<script type = "text/javaScript">
document.write ("Fecha /hora actual:" + nueva fecha () + "<Br />");
document.write (DisplayDStSwitchDates ());
</script>
</body>
</html>