复制代码代码如下:
<! Doctype html>
<html>
<adal>
<Title> Calculatrice DST </TITME>
<script type = "text / javascript">
fonction displayDstWitchDates ()
{
var année = new Date (). Getyear ();
si (année <1000)
année + = 1900;
var firstwitch = 0;
var landswitch = 0;
var Lastoffset = 99;
// Louit chaque mois de l'année en cours
pour (i = 0; i <12; i ++)
{
// Répondre à la valeur du fuseau horaire pour le mois
var newdate = new Date (date.Utc (année, i, 0, 0, 0, 0, 0));
var tz = -1 * newdate.getTimeZoneOffset () / 60;
// capture lorsqu'un changement de timzeezone se produit
if (tz> Lastoffset)
FirstSwitch = i-1;
else if (tz <Lastoffset)
secondSwitch = i-1;
Lastoffset = tz;
}
// va comprendre les événements de date / heure une minute avant
// Un ajustement DST se produit
var secondDStDate = findDStwitchDate (année, secondSwitch);
var firstDStDate = findDStwitchDate (année, firstwitch);
if (firstdstDate == null && seconddStDate == null)
RETOUR 'Les épargnes de la lumière du jour ne sont pas observés dans votre fuseau horaire.';
autre
Retour 'Dernière minute avant que le changement DST ne se produise dans' +
Année + ':' + FirstDstDate + 'et' + SeconddStDate;
}
fonction finddswitchDate (année, mois)
{
// définir la date de début
var-basasedate = new Date (date.utc (année, mois, 0, 0, 0, 0, 0));
var changolay = 0;
var ChangeMinute = -1;
var baseoffset = -1 * basasedate.getTimeZoneOffset () / 60;
var dstdate;
// boucle pour trouver le jour exact un ajustement du fuseau horaire se produit
pour (jour = 0; jour <50; jour ++)
{
var tmpDate = new Date (date.Utc (année, mois, jour, 0, 0, 0, 0));
var tmpoffset = -1 * tmpdate.getTimeZoneOffset () / 60;
// Vérifiez si le fuseau horaire a changé d'un jour à l'autre
if (tmpoffset! = BaseOffset)
{
Var minutes = 0;
changée = jour;
// sauvegarde un jour et grap le décalage
tmpDate = new Date (date.Utc (année, mois, jour-1, 0, 0, 0, 0));
tmpoffset = -1 * tmpdate.getTimeZoneOffset () / 60;
// Comptez les minutes jusqu'à ce qu'un chêne du fuseau horaire se produise
tandis que (ChangeMinute == -1)
{
tmpDate = nouvelle date (date.Utc (année, mois, jour 1, 0, minutes, 0, 0));
tmpoffset = -1 * tmpdate.getTimeZoneOffset () / 60;
// déterminer le changement exact du fuseau horaire
// se produit
if (tmpoffset! = BaseOffset)
{
// sauvegarde une minute pour obtenir la date / heure juste
// avant qu'un changement de fuseau horaire ne se produise
tmpoffset = nouvelle date (date.utc (année, mois,
Jour 1, 0, Minutes-1, 0, 0));
ChangeMinute = minutes;
casser;
}
autre
minutes ++;
}
// ajouter un mois (pour l'affichage) puisque JavaScript compte
// mois de 0 à 11
dstdate = tmpoffset.getMonth () + 1;
// pad le mois au besoin
if (dstdate <10) dstdate = "0" + dstDate;
// Ajouter le jour et l'année
dstdate + = '/' + tmpoffset.getDate () + '/' + année + '';
// capturer l'horodatage
tmpDate = nouvelle date (date.utc (année, mois,
Jour 1, 0, Minutes-1, 0, 0));
dstdate + = tmpDate.totiMestring (). Split ('') [0];
retour dstdate;
}
}
}
</cript>
</ head>
<body>
<script type = "text / javascript">
Document.Write ("Date actuelle / heure:" + new Date () + "<Br />");
Document.Write (DisplayDStWitchDates ());
</cript>
</docy>
</html>