Ich habe eine einfache Funktion geschrieben, um jede UTC-Zeit in die aktuelle UK-Zeit umzurechnen (abhängig davon, ob die Sommerzeit in der aktuellen Saison angewendet wird, ist das Ergebnis entweder die gleiche UTC oder UTC + 1)):PowerShell - Konvertierung von UTC in britische Sommerzeit
function Convert-UTCToUKTime
{
[CmdletBinding()]
param
(
[Parameter(Mandatory = $true)] $UTCTime
)
$UKTime = (Get-Date -Date $UTCTime)
if ($UKTime.IsDaylightSavingTime() -eq $true)
{
$UKTime = $UKTime.AddHours(1)
}
return $UKTime
}
ich in der anderen Funktion verwenden diese auch aktuelle UK-Zeit und es funktioniert gut zu erhalten:
function Get-UKTime
{
[CmdletBinding()]
[OutputType([System.String])]
param
(
[Parameter(Mandatory = $true)] [String] $Format
)
$UKTime = Convert-UTCToUKTime -Time ((Get-Date).ToUniversalTime())
return $UKTime.ToString($Format)
}
Allerdings, wenn ich versuche, übergeben sie die Konvertierungsfunktion eine Datei erstellt Zeit (was natürlich in UTC ist), es erkennt keine Sommerzeit e und daher kehrt mit einer Stunde der UK Zeitwert hinter (I unter Verwendung Get-Date
die exakt gleiche Zeit zu vertreiben versuchte - es gab keine Probleme):
[System.IO.FileInfo] $FileInfo = $FullFileName
$FileCreatedTime = Convert-UTCToUKTime -UTCTime (($FileInfo.CreationTimeUTC)
fand ich das Update, die mir geholfen, diese Funktion zu erhalten, wie ich erwarte, dass bis (von dem DateTime
Typ String
Umwandlung vor als Parameter übergeben):
$FileCreatedTime = Convert-UTCToUKTime -UTCTime (($FileInfo.CreationTimeUTC).ToString("yyyy/MM/dd hh:mm:ss"))
aber ich bin nicht wirklich sicher, warum das funktioniert. Was ist der Unterschied zwischen der Verwendung von Get-Date
und dem Übergeben der Zeit für die Dateierstellung als Parameter, da beide den gleichen Typ DateTime
haben?
Jede Erklärung würde wirklich geschätzt werden.
'[Timezone] :: ConvertTimeBySystemTimeZoneId ($ UTCTime, 'UTC', 'GMT Standard Time')' – PetSerAl
@PSA, ist GMT keine Zeit 'UK' –
@JaquelineVanek Hat man London nicht hier haben '[Timezone]: : FindSystemTimeZoneById ('GMT-Standardzeit'). DisplayName'? Ist London nicht mehr Großbritannien? – PetSerAl