조금 ... 순진 아마도, 그것은 를 얻을 수있는 하나의 방법 스위치가없는 약어 :
[Regex]::Replace([System.TimeZoneInfo]::Local.StandardName, '([A-Z])\w+\s*', '$1')
내 레그 lar expression은 아마 원하는 것을 남겨 둘 것입니다.
위의 시간대 출력은 EST
입니다. 다른 GMT 오프셋 설정 값이 무엇인지보고 싶었 기 때문에 일부를 보았습니다. .NET은 DateTime
과 TimeZoneInfo
사이의 링크가 좋지 않은 것처럼 보이므로 프로그래밍 방식으로 모두 검사하여 확인할 수는 없었습니다. . StandardName
으로 돌아 오는 일부 문자열에 대해 제대로 작동하지 않을 수 있습니다.
편집 : 내 컴퓨터의 시간대를 변경 좀 더 조사가 수동으로 GMT+12
이와 TimeZoneInfo
을 확인 않았다 다음과 같습니다
: 내 코드에이 결과를 생성
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
PS> [Regex]::Replace([System.TimeZoneInfo]::Local.StandardName, '([A-Z])\w+\s*', '$1')
U+12
따라서 StandardName
은 표준 이름이 없기 때문에 단어 집합이거나 그냥 오프셋 지정으로 표시되는지 여부를 감지해야합니다.마지막으로
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
아름다움처럼 작동합니다! –
@Ken 나는 그것에 조금 희롱되었다. 그러나 나는 트릭을했기 때문에 기쁘다 :). – Shibumi
'SA 태평양 표준시'는'SPST'가됩니다. 정말 정확하지는 않습니다. 당신이 제공 한 정보는 매우 도움이되었습니다. 나는 단지 분 오프셋을 얻는 것에 정착하기로 결정했다. '[System.TimeZone] :: CurrentTimeZone.GetUtcOffset ([datetime] :: Now) .TotalMinutes' – VertigoRay