Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Zeitangaben in der Zukunft mit PHP?

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Zeitangaben in der Zukunft mit PHP?

    Hallo,

    ich bin gerade über folgendes Problem gestolpert:
    PHP-Code:
    echo date("d. F Y H:i:i"strtotime("NOW +30 YEAR")); 
    Nach meiner Recherche ist ein Timestamp in der Lage das zu fassen. Die strtotime() Funktion scheint da aber dann limitiert zu sein. Wie kann ich einfach die folgenden (als Text vorhandenen) Intervalle berechnen, ohne auf dieses Limit zu kommen:
    "+30 YEAR"
    "+50 YEAR"
    "+40 MONTH"
    etc.

    Bisher habe ich das immer mit strtotime() gemacht:
    PHP-Code:
    $Value "+30 YEAR"// aus Datenbank etc.
    $EndDate strtotime("NOW $Value"time()); 
    Das geht mit "+30 YEAR" aber nicht. Gibt es einen Ersatz für strtotime() der die Einschränkung nicht hat?

    Donald

  • #2
    Antwort für die nächsten 38 Minuten:
    PHP-Code:
    echo PHP_INT_MAX strtotime("+27 YEAR 8 MONTH 29 DAY 10 HOUR"); 
    [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


    • #3
      Boah, die Antwort ist aber um die Ecke...

      Nach meiner Recherche ist ein Timestamp in der Lage das zu fassen.
      Das solltest du noch einmal recherchieren (vor allem für ein 32-Bit System).

      Kommentar


      • #4
        Zitat von nikosch Beitrag anzeigen
        antwort für die nächsten 38 minuten:
        38 + 34 = 60 ?

        ^^ scnr
        [IMG]http://media.ubuntuusers.de/portal/files/ubuntu.png[/IMG][IMG]http://sqlmanager.net/i/ico/mysql.gif[/IMG][SIGPIC][/SIGPIC]

        Kommentar


        • #5
          Häh? Nein, das obige Beispiel funcktioniert jetzt nicht mehr (Überlauf des INT-Bereichs). Vorher hat es sich stetig gen 0 bewegt.
          [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


          • #6
            Hallo,

            Die Einschränkung ist auf 64 bit Systemen wohl so nicht gegeben.

            Um auf meine Frage zurückzukommen: Gibt es einen Workaround um zum heutigen Datum locker mal 40 Jahre zu addieren? Oder 200 Monate? So dass PHP auf einem 32 Bit System nicht aufgibt? Sowas wie ein Funktionswrapper? Sowas wie mb_string für Multibytes, nur eben ein mb_time für extragroße Datumsangaben?

            Grüße,

            Donald

            Kommentar


            • #7
              MySQL-Timestamps. Die halten wenigstens bis zum 31. Dezember 9999 durch. Mit dem UNIX-Timestamp werden wir in Zukunft noch hübsche Probleme bekommen. Das erinnert mich dann immer ein bisschen an den berüchtigten Millennium-Bug. Auch historische Daten lassen sich per UNIX-Timestamp kaum bis gar nicht abbilden. Aber mit 64Bit-Systemen hat man die Probleme noch gut nach hinten verschoben. Die Zahlen werden trotzdem immer länger.
              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


              • #8
                Zitat von Manko10 Beitrag anzeigen
                Mit dem UNIX-Timestamp werden wir in Zukunft noch hübsche Probleme bekommen.
                Nicht nur mit dem:
                Critical and Significant Dates
                Je grösser der Dachschaden, desto schöner der Ausblick zum Himmel. - [WIKI]Karlheinz Deschner[/WIKI]

                Kommentar


                • #9
                  Hallo,

                  Sorry dass ich den Thread nochmal hochnehme. Aber ich hab noch immer keine Lösung um in PHP (32 Bit) mit einem Datum in zB 50 Jahren zu rechnen.

                  Gibt es für mktime etc. einen Satz von Ersatzfunktionen?

                  Grüße,

                  Donald

                  Kommentar


                  • #10
                    Der Bereich, in dem DateTime rechnen kann, sollte wohl ausreichend sein:
                    Zitat von Manual
                    The range is from about 292 billion years in the past to the same in the future.
                    [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                    Kommentar


                    • #11
                      Hi Chris,

                      Sorry, aber siehe mein erster Post. Die PHP-Funktion strtotime() kann das Beispielsweise nicht. Und auch PHP's TimeStamp unter 32 Bit kann das allgemein nicht.

                      Ich nutze nicht MySQL als Datenbank, sondern verschiedene Systeme (Anwender kann zB Oracle wählen). Eine Verwendung der DB-Funktionen würde mein Programm massiv verkomplizieren und das Problem nur verlagern. Ist doch irgendwie blöd, wenn ich alle Datums-Rechnungen in Datenbank-Spezifische SQL-Befehle übersetze und dann immer einen Query mache weil PHP das nicht kann. Und mit Datum rechnen in Oracle ist zB der Horror total.

                      Ich erkenne, dass niemand eine Lösung hat um mit PHP die Date/Time Funktionen unter 32 Bit über einen größeren Zeitraum zu nutzen?

                      [EDIT]Hab gerade die PEAR Erweiterung "Date" gefunden. Das scheint sowas zu können. Muss ich mir mal ansehen...

                      Donald

                      Kommentar


                      • #12
                        Tja das Manual müsst man schon durchsuchen: PHP: Date/Time - Manual
                        [IMG]http://media.ubuntuusers.de/portal/files/ubuntu.png[/IMG][IMG]http://sqlmanager.net/i/ico/mysql.gif[/IMG][SIGPIC][/SIGPIC]

                        Kommentar


                        • #13
                          Hallo,

                          Tja das Manual müsst man schon durchsuchen: PHP: Date/Time - Manual
                          Ich drücke mich wohl einfach immer falsch aus.

                          Diese Funktionen sind toll - hab ich auch schon entdeckt - aber ich benötige strtotime(). Die liefert einen Unix-Timestamp mit den genannten Problemen. Siehe mein erster Post. Ich muss aber in PHP mal eben 60 Jahre addieren können. Dazu habe ich Zeichenketten wie zB "+60 YEAR" oder "+400 MONTH" etc. Deshalb nutze ich strtotime(). Und das liefert Fehler unter 32 Bit Systemen.

                          Gibt es Ersatz für strtotime() der das kann?

                          Alternativ überlege ich, die Strings selbst zu parsen und dann halt mit anderen Date-Befehlen ohne Timestamps zu arbeiten. strtotime() macht ja aber noch viel mehr. Ich schränke ich meine Kunden ein, wenn ich nur wenige Varianten zulasse. Bisher hab ich gesagt, sie sollen sich an die Möglichkeiten von strtotime() wenden (also GNU Date Input Formats zu finden unter GNU tar 1.23: 7. Date input formats). Das fällt dann weg.

                          Donald

                          Kommentar


                          • #14
                            Dir muß man das Manual echt vorlesen, oder?
                            PHP: DateInterval::__construct - Manual
                            http://de.php.net/manual/en/dateinte...datestring.php
                            http://de.php.net/manual/en/class.dateperiod.php#92130
                            [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
                              Diese Funktionen sind toll - hab ich auch schon entdeckt - aber ich benötige strtotime(). Die liefert einen Unix-Timestamp mit den genannten Problemen. Siehe mein erster Post. Ich muss aber in PHP mal eben 60 Jahre addieren können. Dazu habe ich Zeichenketten wie zB "+60 YEAR" oder "+400 MONTH" etc. Deshalb nutze ich strtotime(). Und das liefert Fehler unter 32 Bit Systemen.
                              Dann nutze nicht die Strings "+400 MONTHS" oder "+60 YEARS" sondern implementiere es anders?!
                              [IMG]http://media.ubuntuusers.de/portal/files/ubuntu.png[/IMG][IMG]http://sqlmanager.net/i/ico/mysql.gif[/IMG][SIGPIC][/SIGPIC]

                              Kommentar

                              Lädt...
                              X