Schrift
[thread]8332[/thread]

datums vergleich: vergleichen von datums

Leser: 1


<< |< 1 2 3 4 >| >> 34 Einträge, 4 Seiten
fraggs
 2006-09-14 10:51
#69861 #69861
User since
2006-09-11
179 Artikel
BenutzerIn
[Homepage] [default_avatar]
wie es lautet. kann man aus zb. drei zeilen string das neueste datum bis auf die minute raussuchen ? irgendwelche hints vielleicht gibts shortcuts die ich nicht kenne ... sort ?!?

danke ich werde anfangen
mmm twix
vayu
 2006-09-14 10:59
#69862 #69862
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
wo willst du ein datum raussuchen? aus drei zeilen strings? hä?

CPAN:Date::Calc

Code: (dl )
1
2
3
use Date::Calc qw(Today_and_Now);

my ($year, $month, $day, $hour, $min, $sec) = Today_and_Now();
\n\n

<!--EDIT|vayu|1158217220-->
fraggs
 2006-09-14 11:03
#69863 #69863
User since
2006-09-11
179 Artikel
BenutzerIn
[Homepage] [default_avatar]
AUDIO2-A3.12_P1:project:BmwWtz#1 Wed May 31 13:35:31 2006
AUDIO2-A3.17_P1:project:BmwWtz#1 Wed Sep 13 11:22:57 2006
AUDIO2-A3.8:project:BmwWtz#1     Mon May 08 18:18:02 2006

so sieht die data aus ... ich muss die sotiren nach dem letzten datum um die bisjetzige versions nummer A*.* rauszufinden.

auf CPAN gibts ein paar scripts da sind ein paar schnipple drin aber die sind so 500 lines lang. ich lese weiter ...

EDIT:blagh muss erst ma module installieren kagge keine compilten module :(

EDIT2:Koennte man nicht die daten eingeben (kann ich hard rein coden das input wird spaeter veraendert) und dann mit dem 'datum' matchen ?\n\n

<!--EDIT|fraggs|1158218137-->
mmm twix
vayu
 2006-09-14 11:15
#69864 #69864
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
aha ... siehst du jetzt verstehe ich auch was du möchtest :)

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl

use strict;
use warnings;

my $line = "AUDIO2-A3.12_P1:project:BmwWtz#1 Wed May 31 13:35:31 2006";

if( $line =~ /([a-zA-Z]{3}) (\d{1,2}) (\d{2}:\d{2}:\d{2}) (\d{4})$/ ) {
print "Monat $1\n";
print "Tag $2\n";
print "Uhrzeit $3\n";
print "Jahr $4\n";
}


dann kannst dir noch n hash anlegen welcher monat welcher Zahl zugeordnet ist. bastelst dir das Datum in unserem Format zusammen und vergleichst sie
renee
 2006-09-14 11:24
#69865 #69865
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl

use strict;
use warnings;
use Date::Manip;

my @dates;
my @strings = ('AUDIO2-A3.12_P1:project:BmwWtz#1 Wed May 31 13:35:31 2006',
'AUDIO2-A3.17_P1:project:BmwWtz#1 Wed Sep 13 11:22:57 2006',
'AUDIO2-A3.8:project:BmwWtz#1 Mon May 08 18:18:02 2006',);

for my $string(@strings){
my ($date) = $string =~ m!#1 (.*)$!;
push @dates,$date;
}

my @sorted_dates = sort{Date_Cmp($a,$b)}@dates;
print $_,"\n" for(@sorted_dates);
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
vayu
 2006-09-14 11:31
#69866 #69866
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
Code: (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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/perl

use strict;
use warnings;
use Date::Calc qw(Date_to_Time);
use Data::Dumper;
$Data::Dumper::Sortkeys = 1;

my @lines = ("AUDIO2-A3.12_P1:project:BmwWtz#1 Wed May 31 13:35:31 2006",
"AUDIO2-A3.17_P1:project:BmwWtz#1 Wed Sep 13 11:22:57 2006",
"AUDIO2-A3.8:project:BmwWtz#1 Mon May 08 18:18:02 2006");

my %months = ( "Jan" => "1",
"Feb" => "2",
"Mar" => "3",
"Apr" => "4",
"May" => "5",
"Jun" => "6",
"Jul" => "7",
"Aug" => "8",
"Sep" => "9",
"Oct" => "10",
"Nov" => "11",
"Dec" => "12"
);

my %sort_dates = ();

foreach my $line (@lines) {
if( $line =~ /(.*) [a-zA-Z]{3} ([a-zA-Z]{3}) (\d{1,2}) (\d{2}):(\d{2}):(\d{2}) (\d{4})$/ ) {
my $version = $1;
my $date = $7.$months{$2}.$3.$4;
my $time = Date_to_Time($7, $months{$2}, $3, $4, $5, $6);
$sort_dates{$time} = $version;

print $version."\n";
print "Monat $2\n";
print "Tag $3\n";
print "Uhrzeit $4:$5:$6\n";
print "Jahr $7\n";
}
}

print Dumper \%sort_dates;


renee ist zwar kürzer ... ^^ aber ich hab ihm gleich noch die versionen dazu sortiert
fraggs
 2006-09-14 11:34
#69867 #69867
User since
2006-09-11
179 Artikel
BenutzerIn
[Homepage] [default_avatar]
um renee deinen tollen code zu benutzen brauche ich die Date PM's hab kein compiler :( fuer C

@vayu DH mit dem hash fuer jeden "file" die zahlen raus suchen dann vergleichen je hoeher die zahl um so neuer ... einzigste problem ... der monat der ist ja ein 'wort' dann muesste der noch einer zahl zu geordnet werden oder ?

EDIT:hmmmm naja renee das nehme ich zurueck. Date::Manip is total in Perl geschrieben aber ich krieg das tar file nicht auf\n\n

<!--EDIT|fraggs|1158219577-->
mmm twix
vayu
 2006-09-14 11:39
#69868 #69868
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
ich hab doch oben nen hash mit Monaten und den zugehörigen Monatszahlen gebaut. da such ich mir die richtige raus.

und in dem sorted hash stehen die Versionen drin sortiert nach ihrem timestamp.

ich habs nochmal erweitert, dass du zu der version auch das lesbare datum im hash stehen hast

Allerdings brauchst du bei mir auch das Date::Calc modul. wenn du unter windows arbeitest einfach in der konsolo

ppm install Date::Calc eingeben.

Code: (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
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/perl

use strict;
use warnings;
use Date::Calc qw(Date_to_Time);
use Data::Dumper;
$Data::Dumper::Sortkeys = 1;

my @lines = ("AUDIO2-A3.12_P1:project:BmwWtz#1 Wed May 31 13:35:31 2006",
"AUDIO2-A3.17_P1:project:BmwWtz#1 Wed Sep 13 11:22:57 2006",
"AUDIO2-A3.8:project:BmwWtz#1 Mon May 08 18:18:02 2006");

my %months = ( "Jan" => "1",
"Feb" => "2",
"Mar" => "3",
"Apr" => "4",
"May" => "5",
"Jun" => "6",
"Jul" => "7",
"Aug" => "8",
"Sep" => "9",
"Oct" => "10",
"Nov" => "11",
"Dec" => "12"
);

my %sort_dates = ();

foreach my $line (@lines) {
if( $line =~ /(.*#[0-9])\s+[a-zA-Z]{3} ([a-zA-Z]{3}) (\d{1,2}) (\d{2}):(\d{2}):(\d{2}) (\d{4})$/ ) {
my $version = $1;
my $date = $7.$months{$2}.$3.$4;
my $time = Date_to_Time($7, $months{$2}, $3, $4, $5, $6);
$sort_dates{$time}{'version'} = $version;
$sort_dates{$time}{'date'} = "$7/".$months{$2}."/$3";
}
}

print Dumper \%sort_dates;


edit: hatte da noch ein exit 1; drin /blush\n\n

<!--EDIT|vayu|1158221092-->
fraggs
 2006-09-14 11:41
#69869 #69869
User since
2006-09-11
179 Artikel
BenutzerIn
[Homepage] [default_avatar]
dh package runterladen. mit konsole in verzeichniss gehen dann ppm install DAte::Calc

EDIT: bekomme registry errors das ppm nicht gefunden wurde muss mal net admin fragen fuer ein reinstall\n\n

<!--EDIT|fraggs|1158220038-->
mmm twix
vayu
 2006-09-14 12:01
#69870 #69870
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
nicht package runter laden.

einfach in der konsole

ppm install Date::Calc

eingeben
<< |< 1 2 3 4 >| >> 34 Einträge, 4 Seiten



View all threads created 2006-09-14 10:51.