Conversion de l'heure de GMT vers heure locale

siocnarf

XLDnaute Occasionnel
Bonjour,

J'ai fait un bout de code pour me connecter par WMI à l'observateur d'événement de Windows.

En extrayant le timewritten de l'observateur d'événement de Windows et en le convertissant dans un format lisible, j'obtiens 2009-12-08 18:33 au lieu 2009-12-08 13:33.

Comment puis-je déduire le fuseau horaire et delà convertir correctement mon heure?


Pour convertir timewritten de WMI en heure lisible.
Code:
dtmWritten = UTCToDate(objEvent.TimeWritten)

Function UTCToDate(dtmTargetDate)

'WScript.Echo dtmTargetDate

UTCToDate = CDate(Mid(dtmTargetDate, 5, 2) & "/" & _
         Mid(dtmTargetDate, 7, 2) & "/" & Left(dtmTargetDate, 4) _
             & " " & Mid(dtmTargetDate, 9, 2) & ":" & _
                 Mid(dtmTargetDate, 11, 2) & ":" & Mid(dtmTargetDate, _
                     13, 2))

End Function

Voici un bout de code pour aller chercher le WMI

Code:
On Error Resume Next
Dim strComputer
Dim objWMIService
Dim propValue
Dim objItem
Dim SWBemlocator
Dim UserName
Dim Password
Dim colItems

strComputer = "."
UserName = ""
Password = ""
Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2",UserName,Password)
Set colItems = objWMIService.ExecQuery("Select * from Win32_NTLogEvent",,48)
For Each objItem in colItems
	WScript.Echo "Category: " & objItem.Category
	WScript.Echo "CategoryString: " & objItem.CategoryString
	WScript.Echo "ComputerName: " & objItem.ComputerName
	for each propValue in objItem.Data
		WScript.Echo "Data: " & propValue
	next
	WScript.Echo "EventCode: " & objItem.EventCode
	WScript.Echo "EventIdentifier: " & objItem.EventIdentifier
	WScript.Echo "EventType: " & objItem.EventType
	for each propValue in objItem.InsertionStrings
		WScript.Echo "InsertionStrings: " & propValue
	next
	WScript.Echo "Logfile: " & objItem.Logfile
	WScript.Echo "Message: " & objItem.Message
	WScript.Echo "RecordNumber: " & objItem.RecordNumber
	WScript.Echo "SourceName: " & objItem.SourceName
	WScript.Echo "TimeGenerated: " & objItem.TimeGenerated
	WScript.Echo "TimeWritten: " & objItem.TimeWritten
	WScript.Echo "Type: " & objItem.Type
	WScript.Echo "User: " & objItem.User
Next
 

Bebere

XLDnaute Barbatruc
Re : Conversion de l'heure de GMT vers heure locale

bonjour Siocnarf
trouvé sur un forum,cela te mettra peut être sur le bon chemin

L'objet Date ne comporte pas la notion de TimeZone, ou plus précisement défini une date en temps universel
(c'est à dire GMT).
Et c'est lors de la 'conversion' de cette date en une chaine lisible par l'homme que le TimeZone est
utilisé. Donc il faut que tu spécifies le TimeZone aussi sur ton DateFormat sinon il 'convertira'
la date avec le TimeZone du système...

Pour résumer :
Tu dois utiliser le TimeZone à la création de ton Calendar pour créer une date en te basant sur l'heure GMT
et non pas celle du système (ce que tu faisais déjà).
Mais tu dois aussi utiliser le TimeZone lors de l'affichage, sinon c'est le TimeZone du système qui sera
utilisé (après calcul du décalage)...

Ainsi :

Code :
SimpleDateFormat time_format = new SimpleDateFormat("HH:mm:ss z");
Date date = currentTime.getTime();
System.out.println(time_format.format(date));
time_format.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(time_format.format(date));

à bientôt
 

Statistiques des forums

Discussions
314 656
Messages
2 111 609
Membres
111 220
dernier inscrit
Elé0n0re