Mentre questo è un po '... forse ingenuo, è un modo per ottenere un abbreviazione senza istruzione switch:
[Regex]::Replace([System.TimeZoneInfo]::Local.StandardName, '([A-Z])\w+\s*', '$1')
My regu l'espressione lar lascia probabilmente a desiderare.
L'output di quanto sopra per il mio fuso orario è EST
. Ho cercato un po 'come volevo vedere quale sarebbe stato il valore per le altre impostazioni di offset GMT, ma .NET non sembra avere ottimi collegamenti tra DateTime
e TimeZoneInfo
, quindi non ho potuto semplicemente scorrere a livello di codice tutti per controllare . Questo potrebbe non funzionare correttamente per alcune delle stringhe che ritornano per StandardName
.
EDIT: ho ancora un po 'di indagine cambiare il fuso orario sul mio computer manualmente per controllare questo e un TimeZoneInfo
per GMT+12
simile a questa:
PS> [TimeZoneInfo]::Local
Id : UTC+12
DisplayName : (GMT+12:00) Coordinated Universal Time+12
StandardName : UTC+12
DaylightName : UTC+12
BaseUtcOffset : 12:00:00
SupportsDaylightSavingTime : False
che produce questo risultato per il mio codice:
Quindi, suppongo che dovresti rilevare se il StandardName
sembra essere un insieme di parole o solo una designazione offset perché non esiste un nome standard per questo.
Quelli meno problematici fuori degli Stati Uniti sembrano seguire il formato tre parole:
PS> [TimeZoneInfo]::Local
Id : Tokyo Standard Time
DisplayName : (GMT+09:00) Osaka, Sapporo, Tokyo
StandardName : Tokyo Standard Time
DaylightName : Tokyo Daylight Time
BaseUtcOffset : 09:00:00
SupportsDaylightSavingTime : False
PS> [Regex]::Replace([System.TimeZoneInfo]::Local.StandardName, '([A-Z])\w+\s*', '$1')
TST
Funziona come una bellezza! –
@Ken Ero un po 'imbarazzato, ma sono contento che abbia fatto il trucco :). – Shibumi
'SA Standard Pacific Time' diventa' SPST'; che non è veramente preciso. Le informazioni che hai fornito sono state molto utili. Ho deciso di accontentarmi di ottenere l'offset dei minuti: '[System.TimeZone] :: CurrentTimeZone.GetUtcOffset ([datetime] :: Now) .TotalMinutes' – VertigoRay