Question:
Basically I am trying to find a way to convert datetime of a particular timezone to other timezone while taking DST into consideration too. e.g.
What is the time in “Central Pacific Standard Time” when it is, say, 2012/9/29 9:00AM in “Tokyo Standard Time” ?
I found some solutions on the Internet to convert local machine time to other timezone.
1 2 3 |
$ToTimeZoneObj = [system.timezoneinfo]::GetSystemTimeZones() | Where-Object {$_.id -eq $ToTimeZone} $TargetZoneTime = [system.timezoneinfo]::ConvertTime($datetime, $ToTimeZoneObj) |
I am thinking if I can create a datetime object of a timezone different from the local machine, I can then use the solutions I found, or will there be other ways to do what I need?
Thanks
Answer:
This solution worked well for me:
1 2 3 |
$cstzone = [System.TimeZoneInfo]::FindSystemTimeZoneById("Central Standard Time") $csttime = [System.TimeZoneInfo]::ConvertTimeFromUtc((Get-Date).ToUniversalTime(), $cstzone) |
You can then manipulate the $csttime variable just like a datetime object:
1 2 |
Get-Date $csttime.AddHours(-1) -f "MM\dd\yyyy HH:mm:ss" |
References:
http://msdn.microsoft.com/en-us/library/system.timezoneinfo.converttimefromutc(v=vs.110).aspx
http://technet.microsoft.com/en-us/library/ee692801.aspx