Hi all.
I've recently searched for a possibility to convert UTC times to local times using VBScript. Every solution I found dealt with string parsing the UTC time value by splitting it into pieces and then adding the timezone bias, retrieved from the registry. That's a crude method, and it is NOT neccessary...
The SWbemDateTime object provides properties and methods to do this conversion directly:
Function ConvertUTCToLocal( varTime )
Dim myObj, MyDate
MyDate = CDate( varTime )
Set myObj = CreateObject( "WbemScripting.SWbemDateTime" )
myObj.Year = Year( MyDate )
myObj.Month = Month( MyDate )
myObj.Day = Day( MyDate )
myObj.Hours = Hour( MyDate )
myObj.Minutes = Minute( myDate )
myObj.Seconds = Second( myDate )
ConvertUTCToLocal = myObj.GetVarDate( True )
End Function
As long as you do not set the .UTC property, the properties you set are UTC time, and GetVarDate returns the local time. And, of course, you can do this the other way - using .SetVarDate and then retrieving the various properties of the DateTime object. In this scenario, of course, you have to retrieve the .UTC property and add it accordingly...
The SWbemDateTimeObject: http://msdn.microsoft.com/en-us/library/windows/desktop/aa393687%28v=vs.85%29.aspx
regards, Martin
Just what I needed. I was struggling doing this the "hard" way, then stumbled upon your post via Google.
ReplyDeleteThanks much!
Wes
Awesome. Thanks for this. So much better than parsing and calculating.
ReplyDeleteAmazing, this is so much better than the other crazy solutions I was finding. This makes it as easy as in .Net!
ReplyDeleteIt worked like a charm, thanks!
ReplyDelete