Bonjour,
Je souhaite améliorer un point de mon extension google chrome.
Le timezone peut prendre 3 valeurs lors de l'extraction des instructions du code source:
- UTC
- CET (Central European Time).
- CEST (Central European Summer Time).
Actuellement, la checkbox "Local Time" me convertie correctement un temps UTC vers n'importe quel fuseau horaire via cette fonction.
Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
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 function UtcToLocal(date, time) { var utcYear = date.split("-")[0]; var utcMonth = (date.split("-")[1]) - 1; var utcDay = date.split("-")[2]; var utcHour = time.split(":")[0]; var utcMinutes = time.split(":")[1]; var dateUtc = Date.UTC(utcYear, utcMonth, utcDay, utcHour, utcMinutes, 0, 0); var localDate = new Date(dateUtc); var year = localDate.getFullYear(); var month = ("0" + (localDate.getMonth() + 1)).slice(-2); var day = ("0" + localDate.getDate()).slice(-2); var hours = ("0" + localDate.getHours()).slice(-2); var minutes = ("0" + localDate.getMinutes()).slice(-2); var offset = -localDate.getTimezoneOffset(); var absOffset = Math.abs(offset); var sign = (offset > 0) ? "+" : "-"; var hoursOffset = Math.trunc(absOffset / 60); var MinutesHoursOffset = (hoursOffset === 0) ? "\u00b1" + "0" : sign + hoursOffset; var minutesOffset = absOffset % 60; var HoursMinutesOffset = (minutesOffset === 0) ? MinutesHoursOffset : sign + hoursOffset + ":" + minutesOffset; var formattedDate = year + "-" + month + "-" + day; var formattedTime = hours + ":" + minutes; var formattedTimeZone = "UTC" + HoursMinutesOffset; return [formattedDate, formattedTime, formattedTimeZone]; }
Si timezone à pour valeur CEST (comme actuellement) ou CET, j'ai cette fonction qui me remplace respectivement CEST et CET par UTC+2 et UTC+1
Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 function getTimeZone(timezone) { if (timezone === "CET") { return "UTC+1"; } else if (timezone === "CEST") { return "UTC+2"; } }
L'amélioration que j'aimerais apporter est que si mon extension est exécutée en Australie par exemple, lorsque la checkbox est cochée, l'affichage se fait à la date et l'heure locale de l'Australie et qui correspond à la date et l'heure en France au même moment.
La fonction de conversion de UTC à Locale je la comprends parfaitement, en revanche si je souhaite convertir de CET à ACT (Australian Central Time) là je m'y perd.
J'ai dans l'idée qu'une fonction globale est en mesure de convertir un temps local de n'importe où sur la planète en ayant, pour base de conversion, un temps UTC / CEST ou CET.
Petite précision, je ne souhaite pas utiliser moment.js ou tout autre script externe, simplement en pure JS.
Comment vous aborderiez le problème ?
Merci
Partager