Thread Datum als String eingeben und in Datumsformat umwandeln (5 answers)
Opened by Shaq17 at 2015-05-18 13:15

Shaq17
 2015-05-18 13:15
#181074 #181074
User since
2015-05-12
7 Artikel
BenutzerIn
[default_avatar]
Hallo Zusammen,

ich habe folgendes Problem:
Ich habe ein Skript (siehe unten) und dieses rechnet ein eingetragenes Datum stündlich hoch.
Das heißt: Gebe ich als Parameter z.B. 19.05.2015 ein, dann soll Zeile 1 so aussehen:
19.05.2015 00:00:00
Stündlich hochgezählt sieht es dann etwa so aus:
19.05.2015 01:00:00
19.05.2015 02:00:00
19.05.2015 03:00:00
usw.

Als Argument ARGV[0] möchte ich das manuell eingetragene Datum haben.
Als Argument ARGV[1] soll der Pfad .csv Datei angegeben sein, die eingelesen wird.
Als Argument ARGV[2] soll eine Output Datei angegeben werden, in die das Ergebnis (also die jeweiligen Zeitstempel) geschrieben wird.
Auch das soll ein .csv Datei sein.

Da ich unix benutze, reicht für die Ausgabe der " >> Name.csv " befehl.

Hier mein vorheriger Code:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/perl

use DateTime;

$Inputfile = $ARGV[0]; # Name the file

open(INFO, $Inputfile); # Open the file
@lines = <INFO>; # Read it into an array
close(INFO); # Close the file

my$dt = DateTime -> now;

$dt -> set_hour(0);
$dt -> set_minute(0);
$dt -> set_second(0);

print $lines[0];
print $lines[1];

for ($i = 2; $i<@lines; $i++) {

        $datum=$dt->dmy('.') . " " . $dt->hms(':');

        @currentLine = split(/;/, $lines[$i]);
        print($datum . ";" . $currentLine[1]);

        $dt -> add(hours=>1);

}


Wichtig: Hier ist es halt noch so, dass ARGV[0] die input file und ARGV[1] die output file ist. Das will ich ja ändern, wie oben angegeben.
Desweiteren: Wie kann ich jetzt per if - Anweisung zb verlangen, dass das als String eingetippte Datum im Format DD.MM.YYYY umgewandelt wird, und weiterverarbeitet wird?
Bsp: ich gebe als Parameter ARGV[0] "20.05.2015", dann soll er in der Output datei mit genau diesem Tag anfangen, die Uhrzeit auf 0 Uhr stellen.

Meine idee als Pseudo Code:

Code: (dl )
1
2
3
4
5
6
if (ARGV[0] = 'now') then 
DateTime -> now;
else
ARGV0 umwandeln in internes Datum
DateTime = internes Datum (umgewandelt)
endif


Dies bräuchte ich jetzt als funktionsfähiges Perl Skript:)
Danke
Last edited: 2015-05-18 13:19:14 +0200 (CEST)

View full thread Datum als String eingeben und in Datumsformat umwandeln