Time laten zien zoals op Facebook

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ronald brt

Ronald brt

05/12/2014 16:50:16
Quote Anchor link
Ik wil de tijd net zoals die van Facebook laten zien hoe doe ik deze functie.
Bij minder dan 1 minute "Zojuist" vervolgens 1 min 1uur 1 dag etc laten zien.

Op het moment krijg ik de tijd en datum te zien als "04-12-2014 23:36:50" ik vraag ze aan met $reply_date en $reply_time.

Iemand die weet hoe ik dit voor elkaar krijg of een bestaande script die dit doet ?
 
PHP hulp

PHP hulp

07/05/2024 11:20:48
 
Daan Slagter

Daan Slagter

05/12/2014 16:57:42
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
function datum($datum)
{

    $verschil = time() - strtotime($datum);

    if($verschil < 60 * 60) return round($verschil / 60).' minuten';
    elseif($verschil < 60 * 60 * 24) return round($verschil / 60 / 60).' uren';
    else return round($verschil / 60 / 60 / 24).' dagen';
}

?>


Zoiets als dit?
 
Ronald brt

Ronald brt

05/12/2014 18:09:39
Quote Anchor link
Werkt deze met tijd en datum ?
Als ik nu
echo datum("18:00:00 05-12-2014");
OF
echo datum("05-12-2014 18:00:00");

Krijg ik -358 minuten te zien
Gewijzigd op 05/12/2014 18:10:23 door Ronald brt
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/12/2014 20:34:36
Quote Anchor link
Nou vooruit ik wilde hem toch al eens maken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php

function datum($datetime, $maxdays = 13)
{

    // huidige datum en tijd en het verschil tussen opgegeven datum en tijd berekenen
    $now = new DateTime();
    $interval = $datetime->diff($now);
    
    // bereken wanneer de 'volgende dag' begint tov de opgegeven datum en tijd
    $midnight = clone $datetime;
    $midnight->setTime(0, 0);
    $midnight->add(new DateInterval('P1D'));
    
    // daarnaast berekenen we even de tijd zes uur later tov de opgegeven datum en tijd
    $sixHrsLater = clone $datetime;
    $sixHrsLater->add(new DateInterval('PT6H'));
    
    // als de opgegeven tijd in de toekomst ligt geven we een foutmelding
    if($datetime > $now)
        return 'Error';
    
    // als de tijd nu in dezelfde dag valt als de opgegeven tijd OF als het verschil minder is als zes uur
    if($now < $midnight || $now < $sixHrsLater)
    {

        $hours = $interval->format('%h');
        
        // indien minimaal 1 uur geleden
        if($hours > 0)
            return $hours . ' uur geleden';

        $min = $interval->format('%i');
        
        // indien minder dan een minuut geleden
        if($min == 0)
            return 'zojuist';
        
        // indien minder dan twee minuten geleden
        if($min == 1)
            return '1 minuut geleden';

        // indien twee of meer minuten geleden
        return $min . ' minuten geleden';

    }

    
    $days = $interval->format('%a');
    
    // gisteren
    if($days == 1)
        return 'gisteren';
    
    // Minder dan de opgegeven maximale dagen geleden
    if($days <= $maxdays)
        return $days . ' dagen geleden';
    
    // indien meer dan maximale opgegeven dagen dan gewoon de datum teruggeven
    return $datetime->format('d-m-Y'); // 'd-m-Y H:i' om de tijd erbij te vermelden
}

// test
echo datum(new DateTime('05-12-2014 20:18:00')) . '<br>';
echo datum(new DateTime('04-12-2014')) . '<br>';
echo datum(new DateTime('22-11-2014')) . '<br>';
echo datum(new DateTime('10-11-2014')) . '<br>';
echo datum(new DateTime('03-11-2014')) . '<br>';
echo datum(new DateTime('03-11-2015')) . '<br>';

?>
 
Ronald brt

Ronald brt

05/12/2014 21:09:07
Quote Anchor link
Dat komt mooi uit voor mij dat je dit al wilde maken, bedankt voor om deze te delen.
Ik heb alleen een probleem met;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo datum(new DateTime('05-12-2014 20:18:00')) . '<br>';


Hier krijg ik error terug want ik wil het liefst op datum en tijd laten checken.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/12/2014 21:11:21
Quote Anchor link
Of ik begrijp jou niet of je bedoelt dat je op de laatste een foutmelding krijgt want die heeft als jaartal 2015...

Of je server / computer staat niet op de juiste tijd ingesteld.
Gewijzigd op 05/12/2014 21:12:36 door Frank Nietbelangrijk
 
Ronald brt

Ronald brt

05/12/2014 21:15:00
Quote Anchor link
Nee ik heb gewoon de hele code gekopieerd geplakt output kreeg ik dit;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
Error
gisteren
13 dagen geleden
10-11-2014
03-11-2014
Error


Nevermind na restarten van mn server werkt hij nu gewoon goed.

HEEL ERG BEDANKT VOOR DEZE FUNCTIE!!
Gewijzigd op 05/12/2014 21:16:52 door Ronald brt
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/12/2014 21:21:35
Quote Anchor link
Graag gedaan is de werking helder?
 
Ronald brt

Ronald brt

05/12/2014 21:28:02
Quote Anchor link
Zover ik heb kunnen zien is, laat secondes, minuten, uren, dagen, 1 dag verschil is laat gisteren zien, en volgens mij max 13 (te instellen) dagen laten zien anders datum laten zien ?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/12/2014 21:31:44
Quote Anchor link
exact!

Daarnaast laat ie niet gelijk gisteren zien als je om 23:55 een bericht aanmaakt en het is nu 0:05. Dan laat ie gewoon zien dat het 10 minuten geleden is. Dit doet ie tot maximaal zes uur. Dan is het inmiddels wel de volgende ochtend en kunnen we gerust zeggen dat het gisteren was
Gewijzigd op 05/12/2014 21:34:21 door Frank Nietbelangrijk
 
Ronald brt

Ronald brt

05/12/2014 21:41:27
Quote Anchor link
Ik ben echt blij met dit functie hehe, ik heb voor de gisteren output
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
return "gisteren om " .  $datetime->format("H:i");
toegevoegd. Zoals bij FB dan is het meer overzichtelijker qua tijd.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.