marcel: Kalender

hallo zusammen!

ich habe folgendes Problem:

ich habe eine verzeichnisstruktur /jahr/monat/tag

in jedem "tagesordner" liegen mehere dateien ab, die zusammengefasst werden sollen.

das wäre ja nicht so das problem, aber dies alles soll über ein html-formular machbar sein.

d.h. man gibt ein startpunkt und einen endpunkt an, z.B. von 20040328 bis 20040228.

prinzipiell kann man das startdatum vom enddatum substrahieren (+1), aber wie kann zwischen monatswechsel unterschieden werden???

vielen dank im voraus
marcel

PS:
es gab bestimmt schon mal ähnliche einträge über dieses thema...
leider konnte ich das forum nicht durchsuchen, weil "der server wohl ausgelastet ist".... ?!

  1. !ollaH

    Ich kenn mich zwar in Perl nicht aus, aber konvertiere doch das Datum in (ich weiß den Fachausdruck leider nicht) die 1970er-Schreibweise:

    01.01.1970 == 00000000000000

    Es gibt in php eine Funtkion namens time() und date() (für PERL mußt halt mal suchen, wie die da heißen!). Mit denen kannst Du das hin und her konvertieren.
    Wenn Du also dann die Sekundenanzahl seit 1970 hast sind Monatswechsel auch kein Problem mehr.

    Greets Tom1tk

    1. danke schonmal...
      aber wie soll ich denn die sekunden (nach 1970) von dem jeweiligen tag herausbekommen

      Bsp.:

      Ich will heute ->"1080553180" den Wert vom 27.02.04 wissen.

      Ich weiß natürlich, das ich die neunundzwanzig tage von diesem Monat und noch 2 vom letzten Monat zurückrechnen muss, aber wie kann man dies automatisieren?

      gruß
      marcel

      1. Hallo marcel,

        aber wie soll ich denn die sekunden (nach 1970) von dem jeweiligen tag herausbekommen

        perldoc Time::Local (oder http://www.gsp.com/cgi-bin/man.cgi?section=3&topic=Time::Local)

        Bsp.:

        Ich will heute ->"1080553180" den Wert vom 27.02.04 wissen.

        peter@venus:~> perl -e 'use Time::Local; print timelocal(0,0,0,27,01,2004),"\n";'
        1077836400

        Grüße,

        Peter

        --
        exp(i * PI) + 1 = 0
        1. super das funktioniert!!!

          allerdings geht das nur wenn ich es direkt in die konsole eintippe...

          wenn ich es in einem perl script habe, kommt folgende fehlermeldung:

          ~/stat> perl -w test.pl
          "use" not allowed in expression at test.pl line 4, at end of line
          syntax error at test.pl line 4, near "use Time"
          Execution of test.pl aborted due to compilation errors.
          ~/stat>

          So sieht meine Datei (test.pl) aus:

          ------------------------------------
          !#/usr/bin/perl -w

          use Time:Local;
          print timelocal(0,0,0,27,01,2004);
          ------------------------------------

          danke schonmal

          1. use Time:Local;

            Na, da fehlt doch was;-)

            Struppi.

            1. Hallo Struppi!

              Was soll denn da fehlen?!
              Meinst du das Modul Time:Local??
              Aber das kann doch gar nicht fehlen, weil es doch in der Konsole auch aufrufen geht...
              Oder verstehe ich da grundlegend etwas nicht...?

              Gruß
              Marcel

              1. hat sich erledigt!!! danke schonmal!

                so funktioniert es!!!

                #!/usr/bin/perl

                use Time::Local;

                $time= timelocal(0,0,0,27,01,2004);
                print $time;

                gruß
                marcel

              2. Was soll denn da fehlen?!
                Meinst du das Modul Time:Local??

                Nein.

                Schau dir mal die Antwort von Peter an:

                peter@venus:~> perl -e 'use Time::Local; print timelocal(0,0,0,27,01,2004),"\n";'
                1077836400

                und dann deinen Quellcode:
                !#/usr/bin/perl -w

                use Time:Local;
                print timelocal(0,0,0,27,01,2004);

                Da fehlt genau ein Zeichen.

                Struppi.

              3. Hallo marcel,

                Was soll denn da fehlen?!
                Meinst du das Modul Time:Local??

                da fehlt einfach ein Doppelpunkt: Time::Local;
                                                      ^^

                Grüße,

                Peter

                --
                exp(i * PI) + 1 = 0
          2. use Mosche;

            Der fehlende Doppelpunkt bei Time::Local wurde dir bereits berichtet.
            Außerdem ist deine Shebang-Zeile falsch:

            !#/usr/bin/perl -w

            #!/usr/bin/perl -w

            use Tschoe qw(Matti);

            --
              Anyone who quotes me in their sig is an idiot. -- Rusty Russell.