Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP "Vor x Tagen"

Einklappen

Neue Werbung 2019

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

  • PHP "Vor x Tagen"

    Guten Tag,

    ich suche jetzt schon eine Weile nach diesem verfahren. Allerdings finde ich nicht das Richtige.

    Folgende dinge habe ich:
    PHP-Code:
    $Uploadtime 1517580600;
    $NowTime time();
    $DiffeTime $NowTime-$Uploadtime;

    TimeHelper($DiffeTime);
    private function 
    TimeHelper($DiffTime){
            if(
    $DiffTime>31536000){
                
    //Jahre
                
    if(($DiffTime/31536000)==1){
                    return 
    "Vor 1 Jahr";
                }else{
                    return 
    "Vor ".floor(($DiffTime/31536000))." Jahren";
                }
            }elseif(
    $DiffTime>2678400){
                
    //Monate
                
    if(($DiffTime/2678400)==1){
                    return 
    "Vor 1 Monat";
                }else{
                    return 
    "Vor ".floor(($DiffTime/2678400))." Monaten";
                }
            }elseif(
    $DiffTime>86400){
                
    //Tage
                
    if(($DiffTime/86400)==1){
                    return 
    "Vor 1 Tag";
                }else{
                    return 
    "Vor ".floor(($DiffTime/86400))." Tagen";
                }
            }elseif(
    $DiffTime>3600){
                
    //Stunde
                
    if(($DiffTime/3600)==1){
                    return 
    "Vor 1 Stunde";
                }else{
                    return 
    "Vor ".floor(($DiffTime/3600))." Stunden";
                }
            }elseif(
    $DiffTime>60){
                
    //Stunde
                
    if(($DiffTime/60)==1){
                    return 
    "Vor 1 Minute";
                }else{
                    return 
    "Vor ".floor(($DiffTime/60))." Minute";
                }
            }
        } 
    So nun möchte ich das wenn der Upload :
    1 Minute her ist dort halt steht "Vor 1 Minute"
    2 Minuten her ist dort halt steht "Vor 2 Minuten"
    1 Stunde her ist dort halt steht "Vor 1 Stunde"
    2 Stunden her ist dort halt steht "Vor 2 Stunden"
    ​​​​​​​1 Monat her ist dort halt steht "Vor 1 Monat"
    ​​​​​​​2 Monate her ist dort halt steht "Vor 2 Monate"
    ​​​​​​​1 Jahr her ist dort halt steht "Vor 1 Jahr"
    ​​​​​​​2 Jahre her ist dort halt steht "Vor 2 Jahre"

    usw.

    Folgende Probleme habe ich:
    - Es gibt Monate mit 31 & 30 & 28 & 27 Tagen wie rechne ich die mit?
    - Geht es noch Performanter?

    Ich danke herzlich für die Antworten, bin da echt am verzweifeln.

    MfG
    MrKampf

  • #2
    wurde vor 7 jahren auf php.net gepostet

    http://php.net/manual/de/dateinterval.format.php#96768
    apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

    Kommentar


    • #3
      Hast Du schon einen Blick auf die DateTime-Klasse geworfen?
      Competence-Center -> Enjoy the Informatrix
      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

      Kommentar


      • #4
        PHP-Code:
        $Uploadtime 1517580600;

        //https://github.com/jspit-de/dt
        $diffHuman dt::create($Uploadtime)->diffhuman();

        echo 
        'vor '.$diffHuman;  //z.B. vor 118 Minuten 
        Auf github findest du noch weitere Klassen wie carbon und moment mit denen das ähnlich einfach machbar ist. Such dir was aus.

        Edit: Beispiel ist falsch. vor 118 Minuten, ab 120 Minuten wird dann "vor 2 Stunden" angezeigt.

        Kommentar


        • #5
          Danke genau das habe ich gesucht.

          MfG
          MrKampf

          Kommentar


          • #6
            *snicker* Welcher Monat hat 27 Tage ? nimm dir Zeit beim Posten und denk auch mal nach, worüber du schreibst
            "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

            Kommentar


            • #7
              @jspint Statt Carbon würde ich jetzt auf Chronos (https://github.com/cakephp/chronos) setzen, da Carbon schon lange nicht mehr gewartet wird. Von Cakephp kann man jetzt halten was man möchte, aber der Carbon Fork ist echt gut und wird regelmäßig gepflegt.

              Kommentar


              • #8
                Schaue ich mir mal an, man kann ja nur dazulernen. Bin mir aber sicher, bei meiner eigenen Klasse zu bleiben. Die ist nun mal ganz auf meine speziellen Bedürfnisse zugeschnitten.

                Kommentar


                • #9
                  Habe Cronos mal überflogen. Für Frameworknutzer mag dies nützlich sein, mich überzeugt soweit ich das überblicke der Leistungsumfang nicht.
                  Sehr viele spezielle Methoden, die in der Masse der etwas fortgeschrittene Anwender auch mit DateTime erschlägt.
                  Dafür mal ein paar Beispiele (auskommentierte Zeilen cronos, dafür das gleiche mit DateTime):
                  PHP-Code:
                  //$time->startOfDay();
                  $time->setTime(0,0);

                  //$time->endOfDay();
                  $time->setTime(23,59,59);

                  //$time->startOfMonth();
                  $time->modify('first day of this month 00:00'); 
                  Leitungsfähige Funktionen die auch mit DateTime etwas aufwendiger sind wie z.B. das Kappen/Runden von Zeiten (z.B. auf eine 1/4 stunde) oder auch unterstützende Methoden zur Bewältigung der Probleme bei der Ermittlung von Feiertagen vermisse ich.

                  PHP Einsteiger (und dazu zähle ich das Thema hier) dürfte ein Gemenge von fast 20 Dateien welches über Composer reigezogen werden muss wohl eher nicht von den Vorteilen der Nutzung von Klassen überzeugen, wenn sein Problem auch mit einer einfachen Funktion wie von BlackScorp #2 gezeigt gelöst wird.

                  Kommentar


                  • #10
                    MOD: Verschoben von PHP-Fortgeschritten
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      Wir hatten das Problem schon mal diskutiert, finde leider den Beitrag nicht mehr, aber die Lösung habe ich in meinem Fundus gefunden, für diejenigen die das roh brauchen

                      PHP-Code:
                      $Uploadtime 1517773000;                        

                      $date = new DateTime('now');
                      $date->setTimestamp($Uploadtime);

                      $today = new DateTime('now');

                      $diff $today->diff($date);
                      var_dump($diff);


                      if ( 
                      $diff->) {
                          
                      $unit 'Jahr';
                          
                      $intervall $diff->y;
                      }elseif (
                      $diff->m) {
                          
                      $unit 'Monat';
                          
                      $intervall $diff->m;
                      }elseif (
                      $diff->d) {
                          
                      $unit 'Tag';
                          
                      $intervall $diff->d;
                      }elseif (
                      $diff->h) {
                          
                      $unit 'Stunde';
                          
                      $intervall $diff->h;
                      }elseif (
                      $diff->i) {
                          
                      $unit 'Minute';
                          
                      $intervall $diff->i;  
                      }else{
                          
                      $unit 'Sekunde';
                          
                      $intervall $diff->s;  
                      }
                      // Pluralform erzeugen
                      if ($intervall != ) {
                          
                      $unit .= 'en';
                          
                      $unit str_replace('ee''e'$unit);
                      }

                      echo 
                      'Thema erstellt vor ' $intervall .' ' $unit .'.'

                      Kommentar


                      • #12
                        Zitat von protestix Beitrag anzeigen
                        Wir hatten das Problem schon mal diskutiert, finde leider den Beitrag nicht mehr, aber die Lösung habe ich in meinem Fundus gefunden, für diejenigen die das roh brauchen
                        ..

                        dann kommt hier raus "...vor 0 Sekunde" ?
                        apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                        Kommentar


                        • #13
                          Zitat von BlackScorp Beitrag anzeigen


                          dann kommt hier raus "...vor 0 Sekunde" ?
                          Ernsthaft, wie stellst du das an?
                          Darfst du aber gerne für dich anpassen.

                          Kommentar


                          • #14
                            Zitat von protestix Beitrag anzeigen
                            Ernsthaft, wie stellst du das an?
                            Darfst du aber gerne für dich anpassen.
                            http://docs.translatehouse.org/proje...uralforms.html wollte doch nur hinweisen dass Plural im Deutschen $n != 1 ist statt $n > 1
                            apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                            Kommentar


                            • #15
                              Wusste ich doch, dass ich noch nachdenken muss.
                              Danke, habe es oben korrigiert, sollte nun korrekt sein.

                              Kommentar

                              Lädt...
                              X