Stefan: Überprüfen ob Datum erreicht?

Hallo,

mit nachfolgender Funktion ermittle ich das aktuelle Datum:

sub getDateTime
{
 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst);

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =  localtime(time);

if ($sec < 10) {$sec = "0$sec";}
 if ($min < 10) {$min = "0$min";}
 if ($hour < 10) {$hour = "0$hour";}
 if ($mday < 10) {$mday = "0$mday";}

$mon++; if ($mon < 10) {$mon = "0$mon";}

$year += 1900;

return ("$mday.$mon.$year");
}

Wie kann ich aber nun prüfen, ob das Datum 01.03.2006 erreicht ist. Gibt es in Perl dafür eine Funktion. Oder muss ich den Tag, Monat, Jahr mittels Stringvergleich prüfen?

Danke im voraus...

  1. Hallo Stefan,

    Wie kann ich aber nun prüfen, ob das Datum 01.03.2006 erreicht ist. Gibt es in Perl dafür eine Funktion. Oder muss ich den Tag, Monat, Jahr mittels Stringvergleich prüfen?

    ich habe dafür bisher Time::Local benutzt. Das ist glücklicherweise sogar ein Standardmodul.
    Das würde dann in etwa so aussehen:

      
    #!/usr/bin/perl -wT  
      
    use strict;  
    use Time::Local;  
      
    # BEACHTE: die Monate gehen von 0..11 statt 1..12  
    my $time = timelocal(00, 00, 00, 03, 00, 2006);  
      
    if(time>$time) {  
       ...  
    }  
    
    

    Gruß,
    Benne

    --
    ie:% fl:( br:> va:) ls:> fo:| rl:° ss:) de:[ js:| ch:| mo:} zu:)
    1. Hi Benne,

      danke dir. Ganz klar ist mir das aber noch nicht.

      Ich werde mal google bemühen...

      bye

      stefan

  2. Hallo Stefan

    Hallo,

    mit nachfolgender Funktion ermittle ich das aktuelle Datum:

    sub getDateTime
    {
    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst);

    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =  localtime(time);

    if ($sec < 10) {$sec = "0$sec";}
    if ($min < 10) {$min = "0$min";}
    if ($hour < 10) {$hour = "0$hour";}
    if ($mday < 10) {$mday = "0$mday";}

    $mon++; if ($mon < 10) {$mon = "0$mon";}

    $year += 1900;

    return ("$mday.$mon.$year");
    }

    Damit ermittelst du kein Datum, sondern formatierst es.

    Wesentlich einfacher ginge das mit sprintf

    sub frmTime
    {
    my ($mday,$mon,$year) =  (localtime(time))[3..5];
    $year += 1900;
    return sprintf "%02d.%02d.%04d", $mday, ++$mon, $year;
    }

    Wie kann ich aber nun prüfen, ob das Datum 01.03.2006 erreicht ist. Gibt es in Perl dafür eine Funktion. Oder muss ich den Tag, Monat, Jahr mittels Stringvergleich prüfen?

    wieso willst du einen  String vergleichen, Vergleich doch die Timestamps. wie du ein Datum umwandeln kannst, hat dir Benne ja schon gesagt.

    Struppi.