Files
dtic-DIIAA/adn/tools/cli/configurar_zona_horaria_dasu.rb

94 lines
3.1 KiB
Ruby

#!/usr/bin/env ruby
# frozen_string_literal: true
# ==========================================================
# Configurar zona horaria Argentina en dasu-sql4
# ==========================================================
require_relative 'drones/lib/dasu_executor'
puts "=== CONFIGURAR ZONA HORARIA - ARGENTINA (UTC-3) ==="
puts ""
ps_script = <<~PSCMD.strip
$ErrorActionPreference = "Stop"
$JSON_PATH = "C:\\temp\\timezone_config_output.json"
$null = New-Item -ItemType Directory -Force -Path "C:\\temp"
Write-Host "[1/4] Zona horaria ACTUAL:"
$tz = Get-TimeZone
Write-Host " ID: $($tz.Id)"
Write-Host " DisplayName: $($tz.DisplayName)"
Write-Host " BaseUtcOffset: $($tz.BaseUtcOffset)"
Write-Host "`n[2/4] Configurando zona horaria ARGENTINA (UTC-3)..."
# Argentina Standard Time es el ID correcto para UTC-3
try {
Set-TimeZone -Id "Argentina Standard Time"
Write-Host " ✅ Zona horaria configurada correctamente"
} catch {
Write-Host " ERROR: $_"
exit 1
}
Write-Host "`n[3/4] Verificando nueva configuración:"
$tz = Get-TimeZone
Write-Host " ID: $($tz.Id)"
Write-Host " DisplayName: $($tz.DisplayName)"
Write-Host " BaseUtcOffset: $($tz.BaseUtcOffset)"
Write-Host "`n[4/4] Fecha/hora actual:"
Write-Host " Get-Date: $(Get-Date)"
Write-Host " Get-Date -Format 'o': $(Get-Date -Format 'o')"
Write-Host " UTC: $(Get-Date -AsUtc)"
# Verificar si SQL Server necesita reinicio
Write-Host "`n[5/5] Verificando SQL Server:"
$connString = "Server=localhost;Database=master;Integrated Security=true;TrustServerCertificate=yes;"
$conn = New-Object System.Data.SqlClient.SqlConnection($connString)
$conn.Open()
$cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT GETDATE() as fecha_sql, SYSUTCDATETIME() as utc_sql", $conn)
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmd)
$ds = New-Object System.Data.DataSet
$adapter.Fill($ds)
if ($ds.Tables[0].Rows.Count -gt 0) {
$row = $ds.Tables[0].Rows[0]
Write-Host " GETDATE(): $($row.fecha_sql)"
Write-Host " SYSUTCDATETIME(): $($row.utc_sql)"
Write-Host " Diferencia con UTC: $([DateTime]::Now - [DateTime]::UtcNow)"
}
$conn.Close()
$resultado = @{
paso = "timezone_configurado"
timezone_id = $tz.Id
timezone_display = $tz.DisplayName
utc_offset = $tz.BaseUtcOffset.ToString()
timestamp = (Get-Date -Format "o")
}
$resultado | ConvertTo-Json | Out-File -FilePath $JSON_PATH -Encoding utf8
PSCMD
puts "\n[1/2] Configurando zona horaria..."
DasuExecutor.execute_ps_on_dasu(ps_script, output_path: 'C:\temp\timezone_config_output.json')
puts "\n[2/2] Leyendo resultado..."
begin
resultado = DasuExecutor.read_json_from_dasu('C:\temp\timezone_config_output.json')
puts "\n=== RESULTADO ==="
puts " Timezone ID: #{resultado['timezone_id']}"
puts " Display: #{resultado['timezone_display']}"
puts " UTC Offset: #{resultado['utc_offset']}"
rescue => e
puts "[!] Error leyendo resultado: #{e.message}"
end
puts "\n✅ Configuración completada"
puts "\n⚠️ NOTA: SQL Server puede necesitar reinicio para aplicar completamente la nueva zona horaria."