1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| // GMT en horaire d"hiver
var gmtHiver = {
"Sydney": "+11",
"Bangkok": "+7",
"Paris": "+1",
"New-York": "-5",
"Papeete": "-10"
};
// récup des éléments, pas besoin d'ID
var oDest = document.querySelectorAll('[data-gmt]');
var destDate = document.querySelectorAll('.date');
var destHeure = document.querySelectorAll('.heure');
// récup. du décalage
var date = new Date();
var gmtLocal = - date.getTimezoneOffset() / 60;
var hms = 3600 * 1000;
var options = {weekday: "long", year: "numeric", month: "long", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit"};
// mise à jour des GMT, en france GMT +2 en été
if (gmtLocal !== 2) {
var ville;
var oData;
var i;
var nb = oDest.length;
for (i = 0; i < nb; i += 1) {
// get la ville
ville = oDest[i].firstElementChild.textContent;
// get les datas
oData = gmtHiver[ville];
// change GMT si existe
if (oData) {
oDest[i].setAttribute('data-gmt', oData);
}
}
}
// because IE11 & Edge ne prennent pas en compte correctement text-transform: capitalize;
function capitalize(str) {
return str.replace(/(\b[a-z](?!\s))/g, function (x) {
return x.toUpperCase();
});
}
function showDate() {
var gmt;
var dTmp;
var sDate;
var sJour;
var sTime;
var i;
var nb = oDest.length;
date = new Date();
for (i = 0; i < nb; i += 1) {
// lecture écart
gmt = oDest[i].getAttribute('data-gmt') /*dataset.gmt*/ * 1;
// récup. de la date correspondante
dTmp = new Date(date.getTime() + ((gmt - gmtLocal) * hms));
// récup format local
sDate = dTmp.toLocaleString('fr-FR', options).split(' ');
// jour dans les 4 premier éléments
sJour = sDate.slice(0,4);
// heure dans dernier élément
sTime = sDate.pop();
// affichage résultats
destDate[i].textContent = capitalize( sJour.join(' '));
destHeure[i].textContent = sTime;
}
// rappel de la fonction
setTimeout(showDate, 1000);
}
// appel de la fonction
showDate(); |
Partager