Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]314[/thread]

Datestamp zerhacken mit einer RegEx



<< >> 5 Einträge, 1 Seite
cbxk1xg
 2004-07-04 03:10
#3033 #3033
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Hallo Freunde der Sonne,

ich würde gerne einen Datestamp so zerhacken, dass man ihn als normales Datum lesen kann.

Der Datestamp sieht so aus (englisches Format, Monat vor Tag):
Code: (dl )
1
2
200401022235
YYYYMMDDHHMM


Das ist natürlich nicht so wirklich leserlich. Ich würde daraus gerne das hier machen: 01.02.2004 22:35

Soweit ich weis passt /d auf eine Zahl. Aber wie bringe ich der RegEx bei, dass die Jahrezahl 4 Stellen und die anderen Zahlen 2 Stellen haben???

Ich hatte hiermit probiert:
Code (perl): (dl )
$datestamp =~ s-d4/d2/d2/d2/d2-$2.$3.$1.$4:$5-g;

Was aber großer Quark zu sein scheint.
format_c
 2004-07-04 04:55
#3034 #3034
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
C:\Dokumente und Einstellungen\format_c>perl
my $datestamp = "200401022235";
my @date = $datestamp =~ /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})$/;

printf "%02d.%02d.%04d %02d:%02d",@date[2,1,0],@date[3,4];

02.01.2004 22:35
C:\Dokumente und Einstellungen\format_c>


Gruß Alex
cbxk1xg
 2004-07-04 19:34
#3035 #3035
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Danke!

Ich hab's für meine Bedürfnisse noch ein wenig angepasst. Das mit den Backreferences hatte ich auch probiert, aber das mit d{2} kannte ich noch nicht.
format_c
 2004-07-04 21:17
#3036 #3036
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ich habe keine Backlreferenzes in meiner RegEx benutzt.

Wenn du mehr wissen möchtest über Perl's regex empfehle ich dir:
perldoc perlintro
perldoc perlre
perldoc perlretut


Gruß Alex
cbxk1xg
 2004-07-04 21:58
#3037 #3037
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Sorry, ich habe mal wieder ohne Sinn und Verstand getippt. Das das keine Backreferences sind ist klar. Ich meinte, dass ich etwas mit Backreferences probiert hatte und daran gescheitert bin.

Ich habe den Code noch mal optimiert, da ich nur den String modifizieren wollte:
Code: (dl )
$datestamp =~ s-(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})-$2.$3.$1 | $4:$5-g;


Trotzdem danke für den Verweis auf perldoc perlre.
<< >> 5 Einträge, 1 Seite



View all threads created 2004-07-04 03:10.