Problem mit Timestamp Formatierung

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Problem mit Timestamp Formatierung

    Also momentan lasse ich mir einen Datensatz ausgeben, der ein Feld mit der Eigenschaft Timestamp besitzt. Leider ist ja dieser Wert total unformatiert und sieht so aus: 20070528143445
    Nun lass ich mir den wie folgt umwandeln:

    Quellcode

    1. $format = "%d.%m.%Y %H:%M:%S";
    2. $datum = strftime($format,$datum);

    In der Variable $datum steht genau dieser Wert: 20070528143445
    Allerdings bekomme ich dann totalen Schrott ausgegeben und zwar diesen hier: 19.01.2038 04:14:07
    Jemand eine Idee was ich daran ändern muss, damit ich was halbwegs akzeptables herausbekomme?
  • mit einem regulären Ausdruck kannst du die den String in die einzelnen Variablen zerlegen.

    Quellcode

    1. preg_match('/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/', $datum, $res);
    2. list($string, $Y, $m, $d, $h, $i, $s) = each($res);


    und mit [phpdoc]strtotime[/phpdoc] kannst du dir daraus wiederum einen timestamp bauen. Aber vielleicht reicht es dir ja auch als String,
  • Hi,

    wenn es dir möglich ist, speichere doch in der DB die zeit als php timestamp mit der time() funktion. die kannst du dann einfach mit der date() funktion formatiert ausgeben.

    vorteil wäre auch noch das du z.b die differenz 2er werte damit "berechnen" kannst und so z.b die online zeit zählen oder die anzahl der tage/min/sek seit dem letzten besuch etc.pp ausgeben bzw für statistiken speichern kannst...


    mfg da BendIt
    .:Reden Ist Schweigen und Silber Ist Gold:.

    real programmers don't comment their code: if it was hard to write, it should be hard to read!
  • ich kenn mich mir sql relativ gut aus, nur war das ja nicht die frage.

    die sql timestamp funktion ist nunmal nicht kompatibel mit der von php.

    also bleibt dir eigentlich nur donuts lösung wenn du es nicht ändern willst

    oder du fügst immer die aktuelle zeit in ein int(12) feld in die db ein.

    dann kannst du ganz easy den timestamp mit date() formatieren und ausgeben.
    oder was auch immer du damit vor hast....

    war auch nur n vorschlag...zwingt dich ja keiner :roll:
    .:Reden Ist Schweigen und Silber Ist Gold:.

    real programmers don't comment their code: if it was hard to write, it should be hard to read!
  • "Chris2k" schrieb:

    Wer sich mit SQL auskennt, der weiß, dass timestamp automatisch das zur Zeit aktuelle Datum einträgt, soweit kein anderer Eintrag erfolgt.


    Wer sich mit SQL auskennt, weiß, dass TIMESTAMP nur mit der Vorgabe CURRENT_TIMESTAMP automatisch die aktuelle Zeit der letzten Änderung des Eintrages einträgt.

    @BendIt:
    Ich mache es auch lieber mit dem UNIX Timestamp und lass es im Script umformatieren, wenn es benötigt wird.
  • Ich benutze mittlerweile sehr gerne meine eigene "Date"-Klasse, weil ich damit einige Arbeitsschritte oft spare. Besonders bei einem Browsergame oder Scripten, die viel mit Zeiten arbeiten erspart das viel Mühe.

    Quellcode

    1. /***************************************************************************
    2. *
    3. * Author: Julian Stier (PhP0Kid)
    4. *
    5. * This File is part of julian-stier.de
    6. *
    7. * Copyright (C) 2007 [JS] PHP - Developing
    8. * www.Julian-Stier.de | Webprogrammierung
    9. *
    10. *
    11. ***************************************************************************/
    12. class Date {
    13. var $sec = "";
    14. var $min = "";
    15. var $hou = "";
    16. var $day = "";
    17. var $wee = "";
    18. var $mon = "";
    19. var $yea = "";
    20. function Date($lang = german){
    21. $this->sec = date("s");
    22. $this->min = date("i");
    23. $this->hou = date("h");
    24. $this->day = date("d");
    25. $this->wee = date("w");
    26. $this->mon = date("m");
    27. $this->yea = date("Y");
    28. if($lang == "german"){
    29. $week = array("Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag");
    30. }
    31. else{
    32. $week = array("Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday");
    33. }
    34. $this->wee = $week[$this->wee-1];
    35. }
    36. //Format: {Datetime} oder {Timestamp} + Sekunden
    37. //Ausgabe: Art = 0: Datetime, Art != 0: Timestamp
    38. function add($date, $time, $art = 0){
    39. $split = explode(" ", $date);
    40. if(count($split) > 1){
    41. $first = explode("-", $split[0]);
    42. $second = explode(":", $split[1]);
    43. $timestamp = mktime($second[0], $second[1], $second[2], $first[1], $first[2], $first[0]);
    44. }
    45. else{
    46. $timestamp = $date;
    47. }
    48. $newtime = $timestamp+$time;
    49. if($art == 0){
    50. $newtime = date("Y-m-d H:i:s", $newtime);
    51. }
    52. return $newtime;
    53. }
    54. //Format: {Datetime} oder {Timestamp} - Sekunden
    55. //Ausgabe: Art = 0: Datetime, Art != 0: Timestamp
    56. function sub($date, $time, $art = 0){
    57. $split = explode(" ", $date);
    58. if(count($split) > 1){
    59. $first = explode("-", $split[0]);
    60. $second = explode(":", $split[1]);
    61. $timestamp = mktime($second[0], $second[1], $second[2], $first[1], $first[2], $first[0]);
    62. }
    63. else{
    64. $timestamp = $date;
    65. }
    66. $newtime = $timestamp-$time;
    67. if($art == 0){
    68. $newtime = date("Y-m-d H:i:s", $newtime);
    69. }
    70. return $newtime;
    71. }
    72. //Liefert aktuelles Datum in versch. Formaten
    73. //tp = Timestamp, dt = Datetime
    74. function current($art){
    75. if($art == "tp"){
    76. return mktime($this->hou, $this->min, $this->sec, $this->mon, $this->day, $this->yea);
    77. }
    78. elseif($art == "dt"){
    79. return $this->yea . '-' . $this->mon . '-' . $this->day . ' ' . $this->hou . ':' . $this->min . ':' . $this->sec;
    80. }
    81. elseif($art == "H"){
    82. return $this->hou;
    83. }
    84. elseif($art == "d"){
    85. return $this->day;
    86. }
    87. elseif($art == "m"){
    88. return $this->mon;
    89. }
    90. elseif($art == "Y"){
    91. return $this->yea;
    92. }
    93. elseif($art == "i"){
    94. return $this->sec;
    95. }
    96. elseif($art == "ti"){
    97. return $this->hou . ':' . $this->min . ':' . $this->sec;
    98. }
    99. else{
    100. return false;
    101. }
    102. }
    103. function diff($date1, $date2){
    104. $split = explode(" ", $date1);
    105. $first = explode("-", $split[0]);
    106. $second = explode(":", $split[1]);
    107. $timestamp1 = mktime($second[0], $second[1], $second[2], $first[1], $first[2], $first[0]);
    108. $split = explode(" ", $date2);
    109. $first = explode("-", $split[0]);
    110. $second = explode(":", $split[1]);
    111. $timestamp2 = mktime($second[0], $second[1], $second[2], $first[1], $first[2], $first[0]);
    112. $diff = $timestamp1-$timestamp2;
    113. return $diff;
    114. }
    115. }
    Alles anzeigen