When you work at a global company, sometimes it's helpful to convert a time into all of your applicable time zones. However, the larger your company get's the harder this task becomes to do manually. One day, I got annoyed, and decided to just write some code, to handle it all for me. I also added some features where it will round the time, and convert the output to markdown for you. ```powershell function Get-StandardTimes { <# .Description The Get-StandardTimes function is designed to get a bundle of standardized times from various time zones you care about. To update the list of time zones you care about update the array of time zones with the results from "Get-TimeZone". .EXAMPLE Get-StandardTimes Time Zone ---- ---- 8/30/2022 11:43:33 AM Pacific Standard Time 8/30/2022 12:43:33 PM Mountain Standard Time 8/30/2022 1:43:33 PM Central Standard Time 8/30/2022 2:43:33 PM Eastern Standard Time 8/30/2022 6:43:33 PM UTC 8/30/2022 7:43:33 PM GMT Standard Time 8/30/2022 8:43:33 PM Central European Standard Time 8/30/2022 8:43:33 PM Romance Standard Time 8/30/2022 8:43:33 PM W. Europe Standard Time 8/31/2022 12:13:33 AM India Standard Time 8/31/2022 3:43:33 AM Tokyo Standard Time 8/31/2022 4:43:33 AM AUS Eastern Standard Time Note how the time zones are output in a simple standard time with the current exact time. .EXAMPLE Get-StandardTimes -AsMarkdown Time | Zone --------------------- | ------------------------------ 8/30/2022 11:44:28 AM | Pacific Standard Time 8/30/2022 12:44:28 PM | Mountain Standard Time 8/30/2022 1:44:28 PM | Central Standard Time 8/30/2022 2:44:28 PM | Eastern Standard Time 8/30/2022 6:44:28 PM | UTC 8/30/2022 7:44:28 PM | GMT Standard Time 8/30/2022 8:44:28 PM | Central European Standard Time 8/30/2022 8:44:28 PM | Romance Standard Time 8/30/2022 8:44:28 PM | W. Europe Standard Time 8/31/2022 12:14:28 AM | India Standard Time 8/31/2022 3:44:28 AM | Tokyo Standard Time 8/31/2022 4:44:28 AM | AUS Eastern Standard Time Returns the times of various time zones in standard Markdown format. .EXAMPLE Get-StandardTimes -Ish Time Zone ---- ---- 8/30/2022 11:46:00 AM Pacific Standard Time 8/30/2022 12:46:00 PM Mountain Standard Time 8/30/2022 1:46:00 PM Central Standard Time 8/30/2022 2:46:00 PM Eastern Standard Time 8/30/2022 6:46:00 PM UTC 8/30/2022 7:46:00 PM GMT Standard Time 8/30/2022 8:46:00 PM Central European Standard Time 8/30/2022 8:46:00 PM Romance Standard Time 8/30/2022 8:46:00 PM W. Europe Standard Time 8/31/2022 12:16:00 AM India Standard Time 8/31/2022 3:46:00 AM Tokyo Standard Time 8/31/2022 4:46:00 AM AUS Eastern Standard Time Rounds the tiem zone object down to the nearest minute. .EXAMPLE Get-StandardTimes -Time $(Get-Date -hour 7) Produces the same output but for Hour 7 in your local time zone. #> [CmdletBinding()] param ( [Parameter(HelpMessage = "Provide a time to convert to common time zones." , Mandatory = $FALSE,ValueFromPipeline = $true )] [datetime]$Time = $(Get-Date), [Parameter(HelpMessage = "Provide the output as Markdown" , Mandatory = $FALSE)] [switch]$AsMarkdown, [Parameter(HelpMessage = "Specify Accuracy" , Mandatory = $FALSE)] [switch]$Ish ) begin{ Function ConvertTo-Markdown { [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [PSObject[]]$InputObject ) Begin { $items = @() $columns = @{} } Process { ForEach($item in $InputObject) { $items += $item $item.PSObject.Properties | %{ if($_.Value -ne $null){ if(-not $columns.ContainsKey($_.Name) -or $columns[$_.Name] -lt $_.Value.ToString().Length) { $columns[$_.Name] = $_.Value.ToString().Length } } } } } End { ForEach($key in $($columns.Keys)) { $columns[$key] = [Math]::Max($columns[$key], $key.Length) } $header = @() ForEach($key in $columns.Keys) { $header += ('{0,-' + $columns[$key] + '}') -f $key } $header -join ' | ' $separator = @() ForEach($key in $columns.Keys) { $separator += '-' * $columns[$key] } $separator -join ' | ' ForEach($item in $items) { $values = @() ForEach($key in $columns.Keys) { $values += ('{0,-' + $columns[$key] + '}') -f $item.($key) } $values -join ' | ' } } } } process{ $localTimeZone = $(Get-TimeZone).id $alternateTimeZones = @("Pacific Standard Time","Mountain Standard Time","Central Standard Time","Eastern Standard Time","UTC","GMT Standard Time","Central European Standard Time","Romance Standard Time","W. Europe Standard Time","India Standard Time","Tokyo Standard Time","AUS Eastern Standard Time") if($ish.IsPresent){ $time = Get-Date $time -Millisecond 0 -Second 0 } $times = foreach($timeZone in $alternateTimeZones){ [PSCustomObject]@{ Time = [System.TimeZoneInfo]::ConvertTimeBySystemTimeZoneId($Time,"$timeZone") Zone = $timeZone } } if($AsMarkdown.IsPresent){ $times = ConvertTo-Markdown -InputObject $times return $times } else{ return $times } } } ```