Bonjour,
J'ai deja posé cette question pour un projet VB6.
Aujourd’hui c'est pour un VB.net.
J'ai besoin d'envoyer dans un petit serveur UNIX une variable d'environnement afin que le serveur soit à l'heure local du client.
Exemple Nouvelle Calédonie: WET-11
Exemple pour la France: WET-1WEST,M3.5.0/2,M10.5.0/3
Avec comme explication:
WET : pour West Europe Time à -1 heure vers l'ouest par rapport au temps universel.
WEST :West Europe Summer Time défini comme:
----Dernier(5) dimanche (0) de mars (3) à 2h pour le début
----Dernier(5) dimanche (0) d'octobre(10) à 3h pour la fin
Ainsi le serveur change automatiquement lors des passages heures d'hivers et heure d’été.
Le serveur va chercher l'heure GMT à l'aide d'un serveur NTP.
En .NET j'ai trouvé la liste complete des time zone du PC à l'aide de :
Toutefois cela ne semble pas me donner toutes les informations que j'ai besoin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Dim t As TimeZoneInfo For Each t In TimeZoneInfo.GetSystemTimeZones Console.WriteLine(t.Id) Next
Y a t'il une autre solution sans passer par les API Windows comme j'ai fait en VB6, qui parfois ne fonctionne pas suivant certain PC ?
J'ai trouvé le code ci dessous qui pourrais me convenir, il fraudais que je l'adapte, mais c'est uniquement pour la zone local. je recherche donc la même chose mais pour toutes les zones.
Pour le moment je continue de chercher autour de cela.
Code : 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
29
30
31
32
33
34
35
36
37
38
39
40 Const dataFmt As String = "{0,-30}{1}" Const timeFmt As String = "{0,-30}{1:yyyy-MM-dd HH:mm}" Console.WriteLine("This example of selected " & _ "TimeZone class elements generates the following " & _ vbCrLf & "output, which varies depending on the " & _ "time zone in which it is run." & vbCrLf) ' Get the local time zone and the current local time and year. Dim localZone As TimeZone = TimeZone.CurrentTimeZone Dim currentDate As DateTime = DateTime.Now Dim currentYear As Integer = currentDate.Year ' Display the names for standard time and daylight saving ' time for the local time zone. Console.WriteLine(dataFmt, "Standard time name:", localZone.StandardName) Console.WriteLine(dataFmt, "Daylight saving time name:", localZone.DaylightName) ' Display the current date and time and show if they occur ' in daylight saving time. Console.WriteLine(vbCrLf & timeFmt, "Current date and time:", currentDate) Console.WriteLine(dataFmt, "Daylight saving time?", localZone.IsDaylightSavingTime(currentDate)) ' Get the current Coordinated Universal Time (UTC) and UTC ' offset. Dim currentUTC As DateTime = localZone.ToUniversalTime(currentDate) Dim currentOffset As TimeSpan = localZone.GetUtcOffset(currentDate) Console.WriteLine(timeFmt, "Coordinated Universal Time:", currentUTC) Console.WriteLine(dataFmt, "UTC offset:", currentOffset) ' Get the DaylightTime object for the current year. Dim daylight As DaylightTime = _ localZone.GetDaylightChanges(currentYear) ' Display the daylight saving time range for the current year. Console.WriteLine(vbCrLf & "Daylight saving time for year {0}:", currentYear) Console.WriteLine("{0:yyyy-MM-dd HH:mm} to " & "{1:yyyy-MM-dd HH:mm}, delta: {2}", daylight.Start, daylight.End, daylight.Delta)
Avec:
On sait si la zone supporte les heures d’été mais comment les récupérer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3For Each t In TimeZoneInfo.GetSystemTimeZones dim heureETE as boolean = t.SupportsDaylightSavingTime Next
Merci
Partager