Ankündigung

Einklappen
Keine Ankündigung bisher.

date() - mit Jahreszahl kleiner 1970 rechnen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • date() - mit Jahreszahl kleiner 1970 rechnen

    Hallo zusammen,

    ich muss auf das Datum 01.01.1601 eine bestimmt Anzahl von Tagen addieren. Mit date() ist das ja weder unter Windows noch Linux möglich.

    Habt Ihr eine Idee bzw. einen Ansatzpunkt wie ich da vorgehen kann?

    Danke für eure Hilfe
    Kubi

  • #2
    nur als ansatz, weils zu warm zum denken ist

    du hast $tag, $monat und $jahr
    jetzt rechnest
    $tag += $n

    und prüfst ob nen monats- und jahreswechsel stattgefunden hat
    for ($i=1, $i<13, $i++)
    if ($tag > 31 && $monat == $maxtage[$i])
    {
    $monat ++;
    $tag -= $maxtage[$i]
    }

    Kommentar


    • #3
      ich würde statt 1601 einfach 2001 verwenden und später von der jahreszahl 400 abziehen...

      Kommentar


      • #4
        Wenns nur um Tage geht lässt sich da ja ne einfache Funktion schreiben die das ausrechnet, bei Angaben mit Zeit im Prinzip auch nicht, du musst halt nur Schaltjahre und ggf. Zeitumstellung berücksichtigen

        Kommentar


        • #5
          Zitat von HPR1974 Beitrag anzeigen
          ich würde statt 1601 einfach 2001 verwenden und später von der jahreszahl 400 abziehen...
          die Idee ist mir auch gekommen, da ich aber >148.000 Tage dazu rechnen muss geht das auch nicht. (date kann ja nur bis 2038 oder so ...)

          Zitat von cycap;
          Wenns nur um Tage geht lässt sich da ja ne einfache Funktion schreiben die das ausrechnet, bei Angaben mit Zeit im Prinzip auch nicht, du musst halt nur Schaltjahre und ggf. Zeitumstellung berücksichtigen
          Das mit der einfachen Funktion ist für mich aber nicht so einfach

          Kommentar


          • #6
            Falls du MySQL hast, kannst du die Datenbank für Datumsberechnungen benutzen. Die hat keine Probleme mit diesen Daten. Bsp.
            PHP-Code:
            $sql "
                SELECT
                    DATE_ADD('1601-01-01', INTERVAL 12 DAY)"

            addiert 12 Tage dazu, => "1601-01-13". Tabellen brauchst du dabei keine, eigentlich nicht mal eine Datenbank.
            [edit]
            Mit 148 Tagen bist du ja nochlange nicht über 2038:
            Code:
            SELECT DATE_ADD('1601-01-01', INTERVAL 148.000 DAY);
            ergibt "1601-05-29"
            Gruss
            L

            Kommentar


            • #7
              Das mit der einfachen Funktion ist für mich aber nicht so einfach
              Na nen bisschen was nachdenken musst du schon... wenn ich mich nicht irre dürfte dir folgende Funktion schonmal sagen ob es ein Schaltjahr ist:

              PHP-Code:
              function schaltjahr($jahr)
              {
                if(
              $jahr/== (int)($jahr/4)) return true;
                else return 
              false;

              Kommentar


              • #8
                da irrst du
                PHP-Code:
                 function schaltjahr($jahr)
                {
                  if(
                $jahr 400 == 0)
                    {
                    return 
                true;
                    }
                  elseif(
                $jahr == && $jahr 100 != 0)
                    {
                    return 
                true;
                    }
                  else
                    {
                    return 
                false;
                    }

                wobei dann noch die frage zu klären ist seit wann es schaltjahre gibt

                Kommentar


                • #9
                  Ich werd mich morgen mal hinsetzen und versuche so eine Funktion zusammen basteln Bei Problemen melde ich mich

                  Danke erst einmal für die Tipps, ich mach erst mal Feierabend

                  Kommentar


                  • #10
                    Zitat von keinplanvonnix Beitrag anzeigen
                    wobei dann noch die frage zu klären ist seit wann es schaltjahre gibt
                    Man sollte bedenken, dass es den Gregorianischen Kalender erst seit Ende des 16. Jahrhunderts gibt.
                    Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

                    Kommentar


                    • #11
                      Jetzt haben wir ein Problem: Zu der Zeit gabs noch gar kein PHP... und was jetzt?

                      Kommentar


                      • #12
                        Zitat von lazydog Beitrag anzeigen
                        Falls du MySQL hast, kannst du die Datenbank für Datumsberechnungen benutzen. Die hat keine Probleme mit diesen Daten. Bsp.
                        PHP-Code:
                        $sql "
                            SELECT
                                DATE_ADD('1601-01-01', INTERVAL 12 DAY)"

                        addiert 12 Tage dazu, => "1601-01-13". Tabellen brauchst du dabei keine, eigentlich nicht mal eine Datenbank.
                        [edit]
                        Mit 148 Tagen bist du ja nochlange nicht über 2038:
                        Code:
                        SELECT DATE_ADD('1601-01-01', INTERVAL 148.000 DAY);
                        ergibt "1601-05-29"
                        Der Punkt dient nur der Übersichtlichkeit. Ich spreche ja auch von >148000 Tagen ...

                        Kommentar


                        • #13
                          Zitat von Kubi Beitrag anzeigen
                          Der Punkt dient nur der Übersichtlichkeit. Ich spreche ja auch von >148000 Tagen ...
                          Da kannst du auch noch ne 0 dran hängen, MySQL gibt dann 5653-02-07 zurück, ob das stimmt hab ich jetzt grad leider nicht im kopf

                          Hmm aber vor Christi wird das mit MySQL auch nix

                          Code:
                          SELECT DATE_ADD('0000-01-01', INTERVAL -5 DAY);
                          gibt nur NULL zurück

                          Kommentar


                          • #14
                            Interessant: Gregorianischer Kalender und die Regel für die Schaltjahre
                            [COLOR="#F5F5FF"]--[/COLOR]
                            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                            [COLOR="#F5F5FF"]
                            --[/COLOR]

                            Kommentar


                            • #15
                              Zitat von cycap Beitrag anzeigen

                              Code:
                              SELECT DATE_ADD('0000-01-01', INTERVAL -5 DAY);
                              gibt nur NULL zurück
                              date(sql) gilt nur für den zeitraum von 1000-01-01 bis 9999-12-31
                              der grund: davor wäre das jahr 3-stellig und danach 5-stellig und damit kommt date nicht klar

                              Kommentar

                              Lädt...
                              X