gershwin.pages.dev

Como obter data UTC e local simultaneamente com PowerShell?

Quando precisamos sincronizar logs ou processar dados em sistemas distribuídos, obter a data e hora tanto no formato UTC quanto no horário local em um único comando se torna essencial. Este método permite capturar ambas as referências de tempo de forma precisa e instantânea, eliminando possíveis descompassos entre execuções.

Pré-requisitos

Script PowerShell para obter data UTC e local simultaneamente

O PowerShell oferece cmdlets nativos para trabalhar com datas e fusos horários. O cmdlet Get-Date pode retornar a data e hora atual, e com a propriedade DateTime podemos formatar a saída conforme necessário. Para obter ambas as referências de tempo, usaremos a propriedade Kind para distinguir entre UTC e local.

$dataLocal = Get-Date
$dataUTC = (Get-Date).ToUniversalTime()

Write-Host "Data e Hora Local: $($dataLocal.ToString('yyyy-MM-dd HH:mm:ss'))"
Write-Host "Data e Hora UTC: $($dataUTC.ToString('yyyy-MM-dd HH:mm:ss'))"

Script avançado com formatação personalizada

Para situações que exigem maior controle sobre o formato de saída, podemos criar um script mais elaborado que inclui o fuso horário local e o deslocamento UTC.

function Get-DataHoraSimultanea {
    $dataLocal = Get-Date
    $dataUTC = (Get-Date).ToUniversalTime()
    $offsetUTC = [System.TimeZoneInfo]::Local.GetUtcOffset($dataLocal)

    $resultado = [PSCustomObject]@{
        "DataHoraLocal" = $dataLocal.ToString('yyyy-MM-dd HH:mm:ss')
        "FusoHorario" = $offsetUTC.ToString()
        "DataHoraUTC" = $dataUTC.ToString('yyyy-MM-dd HH:mm:ss')
        "TimeStampUTC" = $dataUTC.ToString('o') # Formato ISO 8601
    }

    return $resultado
}

Get-DataHoraSimultanea | Format-List

Exemplo Prático

Propriedade Valor de Exemplo Descrição
DataHoraLocal 2024-03-15 14:30:45 Data e hora no fuso horário local
FusoHorario -03:00:00 Deslocamento em relação ao UTC
DataHoraUTC 2024-03-15 17:30:45 Data e hora no formato UTC
TimeStampUTC 2024-03-15T17:30:45.0000000Z Timestamp UTC no formato ISO 8601

Conclusão

Com este script PowerShell, você pode obter simultaneamente a data e hora local e UTC de forma precisa e formatada, facilitando a sincronização de logs, a análise de dados em sistemas distribuídos e a geração de timestamps padronizados para auditoria e monitoramento.