Mit Daten vor 1970 rechnen, aber wie?!

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

  • Mit Daten vor 1970 rechnen, aber wie?!

    Hallöchen!

    Ich möchte prüfen, ob eine Person mindestens 40 Jahre alt ist. Das Problem ist, dass der Unix-Zeitstempel erst 1970 beginnt, und diese Person aber vorher geboren ist. Was soll ich tun? Ich find irgendwie keine ordentlichen datumsfunktionen für PHP, bei denen man das ohne Timestamp lösen könnte ?!
    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

  • #2
    Was hindert dich den Timestamp vor 1970 zu benutzen?, der reicht soweit ich weiß bis ins Jahr 1901 zurück.

    Kommentar


    • #3
      Naja schon aber voer 1970 ist er negativ. Wie soll ich denn damit umgehen? Ich hab sowas noch nie gemacht und daher kA wie ich des angehen soll. Windows unterstüzt z.B. auch garkeine negativen timestamps Nagut das is jez nich mein Problem aber trotzdem. Was tu ich nu?
      Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

      Kommentar


      • #4
        Naja, er gibt sein Geb.-Datum doch in der Form 1959 oder so ein, oder? Dann sag doch einfach wenn die Zahl < 1970 ist, ist es eh klar. Dann brauchst du garkeinen Timestamp mehr.
        Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
        var_dump(), print_r(), debug_backtrace und echo.
        Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
        Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
        Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

        Kommentar


        • #5
          Aaaalso..

          Jo! Du hast mich auf die entscheidende Idee gebracht. Ich war irgendwie vorher damit beschäftigt das mit den Schaltjahren auszuklügeln, und das es dann mit nem Timestamp trotzdem alles stimmt, und jetzt nachdem ich es nach ein paar Stunden endlich hinbekommen hab, komm ich nach dem lesen deines Posts auf die Idee, die Jahre einfach zu subtrahieren, und zu prüfen ob derjenige in dem Jahr schon geburtstag hatte. Funzt super! Ich danke dir! Ich danke euch beiden!

          Gruß
          Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

          Kommentar


          • #6
            Original geschrieben von ArSeN
            Naja schon aber voer 1970 ist er negativ. Wie soll ich denn damit umgehen? Ich hab sowas noch nie gemacht und daher kA wie ich des angehen soll. Windows unterstüzt z.B. auch garkeine negativen timestamps
            PHP-Code:
            $timestamp=mktime(000111960);
            echo 
            'Timestamp: '.$timestamp.'<br />';
            echo 
            'Datum: '.date("M-d-Y"$timestamp).'<br />'
            ausgabe:
            Code:
            Timestamp: -315622800
            Datum: Jan-01-1960
            negative timestamps stellen also grundsätzlich kein problem dar.

            PHP-Manual hat geschrieben:
            Anmerkung: Der gültige Bereich eines Timestamp liegt typischerweise zwischen Fri, 13 Dec 1901 20:45:54 GMT und Tue, 19 Jan 2038 03:14:07 GMT. (Das entspricht den minimalen und maximalen Werten für einen vorzeichenbehafteten 32-Bit Integer). Unter Windows-Betriebssytemen ist dieser Bereich auf 01-01-1970 bis 19-01-2038 beschränkt.
            diese aussage kann ich nachvollziehen, o.g. code habe ich auf einem wamp-system mit winxp pro sp2 ausgeführt
            weiß jemand rat, worauf sich das handbuch bezieht?

            Kommentar


            • #7
              Worauf soll sich das denn beziehn? Unter Windows gehts halt nich mit negativen? Verstehe die Frage nicht..
              Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

              Kommentar


              • #8
                Original geschrieben von ArSeN
                Worauf soll sich das denn beziehn? Unter Windows gehts halt nich mit negativen? Verstehe die Frage nicht..
                was hast du daran nicht verstanden?
                o.g. code habe ich auf einem wamp-system mit winxp pro sp2 ausgeführt
                winxp: WINDOWS XP

                Kommentar


                • #9
                  @3DMax: Mir geht es da auch nicht anders als ArSeN

                  Original geschrieben von ArSeN
                  Worauf soll sich das denn beziehn? Unter Windows gehts halt nich mit negativen? Verstehe die Frage nicht..
                  diese aussage kann ich nachvollziehen, o.g. code habe ich auf einem wamp-system mit winxp pro sp2 ausgeführt
                  weiß jemand rat, worauf sich das handbuch bezieht?
                  welchen Aussage kannst du nachvollziehen? Was bedeutet "nachvollziehen" - d.h. was meint er denn konkret bei einem Datum < 1970?


                  ... und könnte jemand vielleicht noch ein Windows 2k o.ä. testen
                  [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

                  [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

                  [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
                  (from here)

                  Kommentar


                  • #10
                    Hi,

                    er hat nur ein "nicht" vergessen. Er kann die aussage nicht nachvollziehen,
                    da sein testsystem eben doch mit werten kleiner 1970 arbeiten kann.
                    Das soll aber laut docu nicht gehen.

                    greets
                    (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                    Kommentar


                    • #11
                      Original geschrieben von closure
                      er hat nur ein "nicht" vergessen. Er kann die aussage nicht nachvollziehen,
                      da sein testsystem eben doch mit werten kleiner 1970 arbeiten kann.
                      Das soll aber laut docu nicht gehen.
                      joh danke, genauso war es gemeint.

                      ... und könnte jemand vielleicht noch ein Windows 2k o.ä. testen
                      das würde mich auch mal interessieren. zur not muss ich einen wamp unter vmware einrichten...

                      Kommentar


                      • #12
                        @max
                        Also gemäss Manual ist das bei Win unmöglich Probier doch mal was ein
                        PHP-Code:
                        echo date("M-d-Y H:i:s",-1); 
                        ergibt. Gibt das irgendwas wie 31.12.1969 23:59:59 ?

                        Ich habe deinen Timestamp mal in Tage umgerechnet. Ergibt Pi mal Auge 3653 Tage was in etwa einem Datum 10 Jahre vor Unix 0 entsprechen müsste. Scheint komischerweise korrekt zu funzen.
                        Bei mktime() steht noch folgendes im Manual, was wieder ein Widerspruch zu deinen Ergebnissen wäre
                        aus dem Manual

                        Windows: Negative Timestampwerte werden von keiner uns bekannten Windowsversion unterstützt. Aus diesem Grund ist der Gültigkeitsbereich für Jahresangaben auf Werte zwischen 1970 und 2038 eingeschränkt.
                        Gruss

                        tobi
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          http://www.php.net/manual/en/function.mktime.php:
                          Before PHP 5.1.0, negative timestamps were not supported under any known version of Windows and some other systems as well. Therefore the range of valid years was limited to 1970 through 2038.
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            Original geschrieben von wahsaga
                            http://www.php.net/manual/en/function.mktime.php:
                            und deswegen sollte man auch die englische manu bevorzugen :|

                            Kommentar


                            • #15
                              @wahsaga
                              Du hast es mir bereits früher einmal in einem Thread gesagt: Nicht auf die dt Übersetzung des Manuals verlassen. Und trotzdem habe ich es wieder getan Danke...
                              @max
                              Na dann hast mindestens PHP 5.1.0

                              Gruss

                              tobi
                              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                              Kommentar

                              Lädt...
                              X