rippchen
Goto Top

PowerShell, Get-Date, Sommerzeit Winterzeit, Zeitumstellung

Hallo,

ich verwende folgendes Skript zur Stapelverarbeitung von CSV Dateien:

# Schritt 1: Einlesen der CSV Dateien

workflow MergeCSV {
    param([string]$path)
    # Dateien die verarbeitet werden ermitteln
    $files = Get-ChildItem -Path $path -File -Recurse -Filter '*.csv'  

    #Funktion die eine CSV entsprechend bearbeitet und modifiziert zurückgibt
    function Process-CSV($file){
        $content = Get-Content -Path $file.FullName | select -skip 7
        return ($content[0..($content.GetUpperBound(0)-1)] | ConvertFrom-CSV -Delimiter ";" -Header "Colour","Car","TimeStamp","Note","PublicationTimeStamp","ModificationTimeStamp" | select -Property 'Car','ID',@{n='TimeStamp';e={get-date -Date $_.Timestamp -Format 'dd-MM-yyyy HH:mm:ss'}},'Note',@{n='PublicationTimeStamp';e={get-date -Date $_.PublicationTimeStamp -Format 'dd-MM-yyyy HH:mm:ss'}},@{n='ModificationTimeStamp';e={get-date -Date $_.ModificationTimeStamp -Format 'dd-MM-yyyy HH:mm:ss'}})  
    }

    foreach -parallel -throttle 8 ($csv in $files){
        # rufe Funktion zum Bearbeiten der CSV-Datei in Parallelverarbeitung auf
        Process-CSV -file $csv
    }
}

$CSV_PATH = 'C:\Daten Bearbeitung\Import'  

$outVW = 'C:\Daten Bearbeitung\Export\VW.csv'  
$outAudi= 'C:\Daten Bearbeitung\Export\Audi.csv'  

$outVWred = 'C:\Daten Bearbeitung\Export\VWred.csv'  
$outVWblue = 'C:\Daten Bearbeitung\Export\VWblue.csv'  
$outAudired= 'C:\Daten Bearbeitung\Export\Audired.csv'  
$outAudiblue= 'C:\Daten Bearbeitung\Export\Audiblue.csv'  

MergeCSV -path $CSV_PATH | select "Car","Colour","TimeStamp","Note","PublicationTimeStamp","ModificationTimeStamp" | group {$_.Car} | %{  
    $group = $_.group
    switch ($_.Name){
        'VW'{  
            $group | ?{$_."Colour" -eq 'red'}  | export-csv -Path $outVWred -NoTypeInformation -Encoding "UTF8" -Delimiter ";" -Append  
            $group | ?{$_."Colour" -eq 'blue'} | export-csv -Path $outVWblue -NoTypeInformation -Encoding "UTF8" -Delimiter ";" -Append  
         
			$group | export-csv -Path $outVW -NoTypeInformation -Encoding "UTF8" -Delimiter ";" -Append  
		}
        'Audi'{  
            $group | ?{$_."Colour" -eq 'red'}  | export-csv -Path $outAudired -NoTypeInformation -Encoding "UTF8" -Delimiter ";" -Append  
            $group | ?{$_."Colour" -eq 'blue'} | export-csv -Path $outAudiblue -NoTypeInformation -Encoding "UTF8" -Delimiter ";" -Append  
        
		    $group | export-csv -Path $outAudi -NoTypeInformation -Encoding "UTF8" -Delimiter ";" -Append  
		}
    } $group | export-csv -Path $out -NoTypeInformation -Encoding "UTF8" -Delimiter ";" -Append  
}


In den zu bearbeitenden CSV Dateien liegt das Datumsformat wie folgt vor CET:

2015-03-29T01:00:00+01:00
2015-03-29T03:00:00+02:00
2015-03-29T04:00:00+02:00


Am 29.03.215 wurde die Uhrzeit um 02:00 Uhr Winterzeit auf 03:00Uhr Sommerzeit verstellt.

Das Skript gibt mir die an dem jeweiligen Tag herrschende Zeit unter Berücksichtigung von Sommer und Winterzeit aus.


Ich möchte, dass das Skript die Zeit immer in Winterzeit ausgibt.

Könnt ihr mir bitte helfen?

VG

Content-Key: 329790

Url: https://administrator.de/contentid/329790

Ausgedruckt am: 29.03.2024 um 00:03 Uhr

Mitglied: 132272
132272 17.02.2017 um 19:07:45 Uhr
Goto Top
(get-date).ToUniversalTime().AddHours(1)
Gruß
Mitglied: Rippchen
Rippchen 17.02.2017 aktualisiert um 19:39:56 Uhr
Goto Top
Danke für deine Antwort,

meine PoweShell Kenntnisse sind leider limitiert. Das obere Skript habe ich auch nur durch das Forum zusammen bekommen.

ich habe folgendes:

| select -Property 'Car','ID',@{n='TimeStamp';e={(get-date).ToUniversalTime().AddHours(1) }},'Note',@{n='PublicationTimeStamp';e={get-date -Date $_.PublicationTimeStamp -Format 'dd-MM-yyyy HH:mm:ss'}},@{n='ModificationTimeStamp';e={get-date -Date $_.ModificationTimeStamp -Format 'dd-MM-yyyy HH:mm:ss'}})  

Wie kann ich nun folgendes Datumsformat erhalten? dd-MM-yyyy HH:mm:ss'

VG
Mitglied: 132272
132272 17.02.2017 aktualisiert um 23:48:44 Uhr
Goto Top
Wow, au möhr ... immer diese copy n' paster... und tschö
(get-date).ToUniversalTime().AddHours(1).toString('dd-MM-yyyy HH:mm:ss')  
Mitglied: Rippchen
Rippchen 18.02.2017 um 10:31:36 Uhr
Goto Top
Guten Morgen und danke für die Antwort,

ich dacht eigentlich, dass ich den Code richtig eingebunden habe. Es ist leider doch nicht so.
| select -Property 'Car','ID',@{n='TimeStamp';e={(get-date).ToUniversalTime().AddHours(1).toString('dd-MM-yyyy HH:mm:ss') }},'Note',@{n='PublicationTimeStamp';e={(get-date).ToUniversalTime().AddHours(1).toString('dd-MM-yyyy HH:mm:ss')}},@{n='ModificationTimeStamp';e={(get-date).ToUniversalTime().AddHours(1).toString('dd-MM-yyyy HH:mm:ss')}})  

Dieses Skript gibt mir immer nur die Aktuelle heutige Zeit und nicht die Zeit aus der CSV Datei wieder.
Mitglied: 132272
Lösung 132272 18.02.2017 aktualisiert um 10:44:56 Uhr
Goto Top
Dieses Skript gibt mir immer nur die Aktuelle heutige Zeit und nicht die Zeit aus der CSV Datei wieder.
Oh man war ja klar, ist sichtlich Wochenende ...lesen scheint nicht deine Stärke zu sein ....
(get-date -Date $_.PublicationTimeStamp).ToUniversalTime().AddHours(1).toString('dd-MM-yyyy HH:mm:ss')  
Zumal es dir genau so schon vorliegt wie du das jeweilige Datum nimmst!! Aber was will man erwarten bei Copy n Pastern.

Viel Spaß noch bei deinem XXL-Ratespiel.
Mitglied: Rippchen
Rippchen 18.02.2017 um 11:30:38 Uhr
Goto Top
Vielen Dank und noch ein schönes Wochenende face-smile