Add to Technorati Favorites
Welcome to ThePowerShellGuy.com Sign in | Join | Help

PowerShell get-Worldtime function

As we are running for a new year again,Some more timeZone fun, I did a WMI example here : Hey PowerShell Guy!, How Can I Retrieve Time Zone Information for a Computer? , now I show an example that shows the given date in all timezones with information about the Daylight saving time.

This time I'm using the .NET framework 3.5 TimeZoneInfo Class that has some more functionality as the System.TimeZone class, So you will need to have the .NET framework 3.5 installed and as by default .NET 3.5 DLL's are not loaded in PowerShell we also need to load the system.Core nameSpace,

 

# Get-Worldtime function 
# Using the .NET Framework 3.5 TimeZoneinfo class
#
# /\/\o\/\/2007
# http://thePowerShellGuy.com

function get-WorldTime ([datetime]$time = (get-date)){

  [void][System.Reflection.Assembly]::LoadWithPartialName('system.core')

  if ([System.TimeZoneinfo]::local.IsDaylightSavingTime($time)) {
    $tz = [System.TimeZoneinfo]::local.DaylightName
    $dte = [System.TimeZone]::CurrentTimeZone.GetDaylightChanges($time.year).end
    if ($dte -lt $time){$dte = [System.TimeZone]::CurrentTimeZone.GetDaylightChanges($time.year +1).end}
    $next = "DaylightSavingTime will end : $dte"
  }else{
    $tz = [System.TimeZoneinfo]::local.StandardName
    $dts = [System.TimeZone]::CurrentTimeZone.GetDaylightChanges($time.year).start
    if ($dts -lt $time){$dts = [System.TimeZone]::CurrentTimeZone.GetDaylightChanges($time.year +1).start}
    $next = "DaylightSavingTime will Start : $dts"
  }

  "Local time is {0:h:mm:ss tt dddd dd MMMM} {1}" -f $time,$tz
  "UTC Time is {0}" -f [System.TimeZoneinfo]::ConvertTimeToUtc($time)
  $next

  [System.TimeZoneinfo]::GetSystemTimeZones() | 
    select @{n='Time';e={[System.TimeZoneinfo]::ConvertTime($time,$_).tostring('hh:mm tt dd MMM')}},
      id,@{n='DST';e={$_.IsDaylightSavingTime($time)}},DisplayName | ft -a
}

 Usage :

Get-WorldTime will get you the current time,

Get-WorldTime 1/1/2008 will give you info how your New year relates to other TimeZones

Get-Worldtime 11:00 will give 11:00 today local time

Example my New Year is at :

PS I:\PowerShell> get-WorldTime  01/01/2008                                                                             
Local time is 12:00:00 AM Tuesday 01 January W. Europe Standard Time                                                    
UTC Time is 12/31/2007 11:00:00 PM                                                                                      
DaylightSavingTime will Start : 03/30/2008 02:00:00                                                                     
                                                                                                                        
Time            Id                                DST DisplayName                                                       
----            --                                --- -----------                                                       
11:00 PM 31 Dec Greenwich Standard Time         False (GMT) Casablanca, Monrovia, Reykjavik                             
11:00 PM 31 Dec GMT Standard Time               False (GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London     
12:00 AM 01 Jan W. Europe Standard Time         False (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna      
12:00 AM 01 Jan Central Europe Standard Time    False (GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague     
12:00 AM 01 Jan Romance Standard Time           False (GMT+01:00) Brussels, Copenhagen, Madrid, Paris                   
12:00 AM 01 Jan Central European Standard Time  False (GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb                      
12:00 AM 01 Jan W. Central Africa Standard Time False (GMT+01:00) West Central Africa                                   
01:00 AM 01 Jan Jordan Standard Time            False (GMT+02:00) Amman                                                 
01:00 AM 01 Jan GTB Standard Time               False (GMT+02:00) Athens, Bucharest, Istanbul                           
01:00 AM 01 Jan Middle East Standard Time       False (GMT+02:00) Beirut                                                
01:00 AM 01 Jan Egypt Standard Time             False (GMT+02:00) Cairo                                                 
01:00 AM 01 Jan South Africa Standard Time      False (GMT+02:00) Harare, Pretoria                                      
01:00 AM 01 Jan FLE Standard Time               False (GMT+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius         
01:00 AM 01 Jan Israel Standard Time            False (GMT+02:00) Jerusalem                                             
01:00 AM 01 Jan E. Europe Standard Time         False (GMT+02:00) Minsk                                                 
01:00 AM 01 Jan Namibia Standard Time           False (GMT+02:00) Windhoek                                              
02:00 AM 01 Jan Arabic Standard Time            False (GMT+03:00) Baghdad                                               
02:00 AM 01 Jan Arab Standard Time              False (GMT+03:00) Kuwait, Riyadh                                        
02:00 AM 01 Jan Russian Standard Time           False (GMT+03:00) Moscow, St. Petersburg, Volgograd                     
02:00 AM 01 Jan E. Africa Standard Time         False (GMT+03:00) Nairobi                                               
02:00 AM 01 Jan Georgian Standard Time          False (GMT+03:00) Tbilisi                                               
02:30 AM 01 Jan Iran Standard Time              False (GMT+03:30) Tehran                                                
03:00 AM 01 Jan Arabian Standard Time           False (GMT+04:00) Abu Dhabi, Muscat                                     
03:00 AM 01 Jan Azerbaijan Standard Time        False (GMT+04:00) Baku                                                  
03:00 AM 01 Jan Caucasus Standard Time          False (GMT+04:00) Yerevan                                               
03:30 AM 01 Jan Afghanistan Standard Time       False (GMT+04:30) Kabul                                                 
04:00 AM 01 Jan Ekaterinburg Standard Time      False (GMT+05:00) Ekaterinburg                                          
04:00 AM 01 Jan West Asia Standard Time         False (GMT+05:00) Islamabad, Karachi, Tashkent                          
04:30 AM 01 Jan India Standard Time             False (GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi                   
04:30 AM 01 Jan Sri Lanka Standard Time         False (GMT+05:30) Sri Jayawardenepura                                   
04:45 AM 01 Jan Nepal Standard Time             False (GMT+05:45) Kathmandu                                             
05:00 AM 01 Jan N. Central Asia Standard Time   False (GMT+06:00) Almaty, Novosibirsk                                   
05:00 AM 01 Jan Central Asia Standard Time      False (GMT+06:00) Astana, Dhaka                                         
05:30 AM 01 Jan Myanmar Standard Time           False (GMT+06:30) Yangon (Rangoon)                                      
06:00 AM 01 Jan SE Asia Standard Time           False (GMT+07:00) Bangkok, Hanoi, Jakarta                               
06:00 AM 01 Jan North Asia Standard Time        False (GMT+07:00) Krasnoyarsk                                           
07:00 AM 01 Jan China Standard Time             False (GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi                 
07:00 AM 01 Jan North Asia East Standard Time   False (GMT+08:00) Irkutsk, Ulaan Bataar                                 
07:00 AM 01 Jan Singapore Standard Time         False (GMT+08:00) Kuala Lumpur, Singapore                               
08:00 AM 01 Jan W. Australia Standard Time       True (GMT+08:00) Perth                                                 
07:00 AM 01 Jan Taipei Standard Time            False (GMT+08:00) Taipei                                                
08:00 AM 01 Jan Tokyo Standard Time             False (GMT+09:00) Osaka, Sapporo, Tokyo                                 
08:00 AM 01 Jan Korea Standard Time             False (GMT+09:00) Seoul                                                 
08:00 AM 01 Jan Yakutsk Standard Time           False (GMT+09:00) Yakutsk                                               
09:30 AM 01 Jan Cen. Australia Standard Time     True (GMT+09:30) Adelaide                                              
08:30 AM 01 Jan AUS Central Standard Time       False (GMT+09:30) Darwin                                                
09:00 AM 01 Jan E. Australia Standard Time      False (GMT+10:00) Brisbane                                              
10:00 AM 01 Jan AUS Eastern Standard Time        True (GMT+10:00) Canberra, Melbourne, Sydney                           
09:00 AM 01 Jan West Pacific Standard Time      False (GMT+10:00) Guam, Port Moresby                                    
10:00 AM 01 Jan Tasmania Standard Time           True (GMT+10:00) Hobart                                                
09:00 AM 01 Jan Vladivostok Standard Time       False (GMT+10:00) Vladivostok                                           
10:00 AM 01 Jan Central Pacific Standard Time   False (GMT+11:00) Magadan, Solomon Is., New Caledonia                   
12:00 PM 01 Jan New Zealand Standard Time        True (GMT+12:00) Auckland, Wellington                                  
11:00 AM 01 Jan Fiji Standard Time              False (GMT+12:00) Fiji, Kamchatka, Marshall Is.                         
12:00 PM 01 Jan Tonga Standard Time             False (GMT+13:00) Nuku'alofa                                            
10:00 PM 31 Dec Azores Standard Time            False (GMT-01:00) Azores                                                
10:00 PM 31 Dec Cape Verde Standard Time        False (GMT-01:00) Cape Verde Is.                                        
09:00 PM 31 Dec Mid-Atlantic Standard Time      False (GMT-02:00) Mid-Atlantic                                          
09:00 PM 31 Dec E. South America Standard Time   True (GMT-03:00) Brasilia                                              
08:00 PM 31 Dec SA Eastern Standard Time        False (GMT-03:00) Buenos Aires, Georgetown                              
08:00 PM 31 Dec Greenland Standard Time         False (GMT-03:00) Greenland                                             
09:00 PM 31 Dec Montevideo Standard Time         True (GMT-03:00) Montevideo                                            
07:30 PM 31 Dec Newfoundland Standard Time      False (GMT-03:30) Newfoundland                                          
07:00 PM 31 Dec Atlantic Standard Time          False (GMT-04:00) Atlantic Time (Canada)                                
07:00 PM 31 Dec SA Western Standard Time        False (GMT-04:00) Caracas, La Paz                                       
08:00 PM 31 Dec Central Brazilian Standard Time  True (GMT-04:00) Manaus                                                
08:00 PM 31 Dec Pacific SA Standard Time         True (GMT-04:00) Santiago                                              
06:00 PM 31 Dec SA Pacific Standard Time        False (GMT-05:00) Bogota, Lima, Quito, Rio Branco                       
06:00 PM 31 Dec Eastern Standard Time           False (GMT-05:00) Eastern Time (US & Canada)                            
06:00 PM 31 Dec US Eastern Standard Time        False (GMT-05:00) Indiana (East)                                        
05:00 PM 31 Dec Central America Standard Time   False (GMT-06:00) Central America                                       
05:00 PM 31 Dec Central Standard Time           False (GMT-06:00) Central Time (US & Canada)                            
05:00 PM 31 Dec Central Standard Time (Mexico)  False (GMT-06:00) Guadalajara, Mexico City, Monterrey                   
05:00 PM 31 Dec Canada Central Standard Time    False (GMT-06:00) Saskatchewan                                          
04:00 PM 31 Dec US Mountain Standard Time       False (GMT-07:00) Arizona                                               
04:00 PM 31 Dec Mountain Standard Time (Mexico) False (GMT-07:00) Chihuahua, La Paz, Mazatlan                           
04:00 PM 31 Dec Mountain Standard Time          False (GMT-07:00) Mountain Time (US & Canada)                           
03:00 PM 31 Dec Pacific Standard Time           False (GMT-08:00) Pacific Time (US & Canada)                            
03:00 PM 31 Dec Pacific Standard Time (Mexico)  False (GMT-08:00) Tijuana, Baja California                              
02:00 PM 31 Dec Alaskan Standard Time           False (GMT-09:00) Alaska                                                
01:00 PM 31 Dec Hawaiian Standard Time          False (GMT-10:00) Hawaii                                                
12:00 PM 31 Dec Samoa Standard Time             False (GMT-11:00) Midway Island, Samoa                                  
11:00 AM 31 Dec Dateline Standard Time          False (GMT-12:00) International Date Line West                          
                                                                                                                        
                                                                                                                        

 For some more .NET calendar fun but then with the Chinese calender see a former blogpost : Happy Chinese New Year

Enjoy,

Greetings /\/\o\/\/

Published Wednesday, December 19, 2007 3:02 PM by MoW

Comments

# Interesting Finds: December 20, 2007

Thursday, December 20, 2007 10:45 AM by Jason Haley

# Perth Local Time

Thursday, February 07, 2008 3:47 AM by Perth Local Time
Anonymous comments are disabled