Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 15:39

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[PHP] Datum im "Facebook-Stil" ausgeben

Discussion on [PHP] Datum im "Facebook-Stil" ausgeben within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1
 
elite*gold: 1
Join Date: Dec 2012
Posts: 8
Received Thanks: 5
[PHP] Datum im "Facebook-Stil" ausgeben

Ich fange zurzeit mit einem kleinen Messenger an und nutze dafür PHP. Für die Ausgabe des Datums habe nutze ich den Facebook-Sitl e. In meinem ersten Tutorial hier in diesem Forum würde ich euch gerne erklären, wie ihr dies umsetzen könnt.


Ein Beispiel:
Standard Format: Kommentar wurde verfasst am 17.08.2012 - 20:30 Uhr
Facebook Stil: Kommentar wurde verfast "vor 2 Stunden"

Ich stelle euch hier meine Funktion zur Verfügung und erkläre euch im Anschluss darauf wie alles funktioniert.

1. Die Funktion: date.inc.php

PHP-Code:
Code:
<?php

// Datum im Facebook Stil
function niceDate($timestamp)
{
    $difference = time() - $timestamp;
    $periods = array("Sekunde", 
                     "Minute", 
                     "Stunde", 
                     "Tage", 
                     "Woche",
                     "Monate", 
                     "Jahre", 
                     "Jahrzehnte"
    );
    $lengths = array("60","60","24","7","4.35","12","10");

    if ($difference > 0) 
    {
        // Vergangenheit
        $ending = "vor";
    } else {
        // Zukunft
        $difference = -$difference;
        $ending = "noch";
    }

    for($j = 0; $difference >= $lengths[$j]; $j++)
    {
        $difference /= $lengths[$j];
        $difference = round($difference);
    }
    
    if($difference != 1) 
    {
        $periods[$j].= "n";
    }
    else
    {
        if($periods[$j] == "Woche" || $periods[$j] == "Stunde" || $periods[$j] == "Minute" || $periods[$j] == "Sekunde")
        {
            $periods[$j] = $periods[$j];
        }
        else
        {
            $periods[$j] = substr($periods[$j], 0, -1);
        }
    }
    
    $date= "$ending $difference $periods[$j]";
    
    return $date;
}
?>
Im Detail erklärt:

1.
PHP-Code:
Code:
$difference = time() - $timestamp;
Berechnet die Differenz zwischen der aktuellen Serverzeit und eurem Timestamp. Der Timestamp kann beispielsweise aus einer Datenbank stammen. Solltet ihr in eurer Datenbank das DATETIME Format nutzen, dann konvertiert das Datum bei der SELECT Abfrage direkt in einen Unix-Timestamp um.

Das Datum könnt ihr folgendermaßen zu einem Unix-Timestamp konvertieren:
Code :

Code:
SELECT 
    id,
    nachricht,
    UNIX_TIMESTAMP(date) AS unix_date
FROM 
    nachrichten
2.
PHP-Code:
Code:
if ($difference > 0) 
{
    // Vergangenheit
    $ending = "vor";
} else {
    // Zukunft
    $difference = -$difference;
    $ending = "noch";
}
Pürft, ob die Zeitdifferenz in der Vergangenheit oder in der Zukunft liegt und legt dementsprechend die $ending Variable fest, welche später zur Ausgabe dient.


3.
PHP-Code:
Code:
if($difference != 1) 
{
    $periods[$j].= "n";
}
else
{
    if($periods[$j] == "Woche" || $periods[$j] == "Stunde" || $periods[$j] == "Minute" || $periods[$j] == "Sekunde")
    {
        $periods[$j] = $periods[$j];
    }
    else
    {
        $periods[$j] = substr($periods[$j], 0, -1);
    }
}
Hier wird zuerst geprüft, ob die Differenz ungleich 1 ist was bewirkt, dass die Perioden in der Mehrzahl ausgegeben werden (Beispiel: vor 3 Tage"n"). In der darauffolgenden if-Abfrage dient der späteren Lesbarkeit. (Beispiel: 1 Tag(e) - grammatikalisch falsch) Daher wird für die Perioden "Tage, Monate, Jahre und Jahrzehnte" das letzte Zeichen abgeschnitten woraus sich ergibt: 1 Tag, 1 Monat, 1 Jahr, 1 Jahrzehnt.


4.
PHP-Code:
Code:
$date= "$ending $difference $periods[$j]";
Zusammenbau der Variable, die für die Ausgabe der Differenz-Zeit zuständig ist.


Fertiges Beispiel:
PHP-Code:
Code:
<?php

// Include der Funktions-Datei
include("date.inc.php");

// Aktuelle Zeit als Timestamp
$timestamp = time();
$niceDate = niceDate($timestamp);

echo $niceDate;

?>
Fertig!

Ich hoffe mein erstes Tutorial hat euch gefallen. Ich würde mich sehr über Feedback / Verbesserungsvorschläge freuen.

Vielen Dank für's lesen!

Euer
Jaezer
Jaezer is offline  
Thanks
4 Users
Old 12/04/2012, 16:54   #2
 
яαкєѕтχ3's Avatar
 
elite*gold: 0
Join Date: Jul 2012
Posts: 169
Received Thanks: 23
Nice Tutorial kann viele Leute sehr hilfreich sein.
яαкєѕтχ3 is offline  
Old 12/04/2012, 17:35   #3
 
kissein's Avatar
 
elite*gold: 0
Join Date: Sep 2005
Posts: 427
Received Thanks: 87
Quote:
Ich stelle euch hier meine Funktion zur Verfügung und erkläre euch im Anschluss darauf wie alles funktioniert.



4 Jahre alten Quellcode als eigen verkaufen ist dreist, aber wenigsten hast es ins deutsche übersetzt
kissein is offline  
Thanks
1 User
Old 12/04/2012, 22:43   #4

 
Synatex's Avatar
 
elite*gold: 25
Join Date: Apr 2010
Posts: 1,019
Received Thanks: 331
Hat er nicht

Synatex is offline  
Old 12/20/2012, 20:17   #5
 
guterelfe's Avatar
 
elite*gold: 0
Join Date: May 2012
Posts: 910
Received Thanks: 184
Quote:
Originally Posted by Synatex View Post
Hat er nicht

hahaa das hat er 1 zu 1 übernommen
guterelfe is offline  
Old 12/20/2012, 23:31   #6



 
+Yazzn's Avatar
 
elite*gold: 420
Join Date: Jan 2012
Posts: 1,082
Received Thanks: 1,000
Wie dreist manche Leute doch sind.
+Yazzn is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
Woher bekomme ich nen "Engländer" der mir Steam Keys importiert? (Im kleinen Stil) ;)
11/01/2012 - Off Topic - 8 Replies
Hi Leute, Irgendwie passt das nirgendwo rein, deshalb schreib ichs mal ins Offtopic. Also wie der Titel beschreibt suche ich nen "Engländer" (also einer der in den UK lebt), der mir Steam Spiele entsprechend günstig giften kann. VPN ist mir grad seit der IP Sperre von den pscs zu riskant ... Schreibt Doch bitte mal eure Tipps rein oder sagt wie ihr so einen Engländer (Es Wird immer witziger xD) bekommen habt. Bitte keinen der das kommerziell betreibt, sonst kann ich gleich meinen...



All times are GMT +1. The time now is 15:39.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.