[PHP] is het vandaag toegevoegd? [timestamp]

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dag heren,

Ik zit met een klein probleempje. Een vriend van me heeft een leuk databaseje opgezet voor zichzelf :-) En daarin gebruikt hij Timestamp in MySql, dat ziet er dus zo uit 2008-08-18 20:34:12, hartstikke leuk, maar nu vroeg hij aan mij of ik een manier wist of ik kon zien of sommige dingen die hij plaatst, vandaag zijn gedaan. Ik heb het geprobeerd, maar ik kwam er niet uit.

Dit is wat ik wilde doen, hieronder staat de code:

1. Kijk op welke datum het is geplaatst en zet het om naar een unix-timestamp
2. Kijk welde datum het vandaag is, maar daarvan een unix-timestamp
3. vandaag - geplaatst = timestamp van verschil

PHP:
1
2
3
4
5
$toegevoegd = strtotime($Bericht->DatumToegevoegd); // de datum van toevoeging
$vandaag = strftime("%Y-%m-%d 00:00:00", time());
$vandaag = strtotime($vandaag);

$verschil = $vandaag - $toegevoegd


echter kom ik er nu niet meer uit en heb ik GEEN idee hoe ik nu kan zien of dit wel ECHT vandaag is geweest. Ik zat te denken, als het een -min-getal- is, dat het dan eerder dan vandaag is geplaatst en als het een +plus+getal+ is, dat het dan vandaag is gepubliceerd, maar op een of andere manier werkt dat niet :(
Iemand een idee?

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

Wat dacht je ervan om de vergelijking in SQL te doen? Zoiets dus: http://dev.mysql.com/doc/...ctions.html#function_date

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Waarom gebruik je niet de datum/tijd functies van MySQL zelf? Daar zijn ze voor ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
He daar wist ik ook nog niet van, bedankt.
Maar het probleem is, dat hij een soort van lijst heeft op z'n pagina. Met voor ieder gepubliceerd bericht de tijd, dus bijvoorbeeld:
08:27 - Titel van het bericht (dit bericht is dus om half 9 sochtends geplaatst)

Nu plaatst hij niet zo heel vaak een bericht en dan kan het voorkomen dat er dit staat:
17:43 - Titel van het leuke berichtje
08:27 - Titel van het leuke berichtje dat eerder werd geplaatst

Hij wilde dit dan oplossen door berichten die NIET die dag waren geplaatst te wijzigen in de datum (dd/MM), dan zou je krijgen
17:43 - Titel van het leuke berichtje
18/09 - Titel van een berichtje van gisteren

Acties:
  • 0 Henk 'm!

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 15:06
nvm

[ Voor 91% gewijzigd door Jaap-Jan op 19-09-2008 09:40 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

"Niet die dag" is iets anders dan "voor die dag geplaatst". Dat laatste is simpel te controleren zoals je dat nu al doet door direct de timestamp, wat gewoon een getal is) te vergelijken met de timestamp van de dag van vandaag met de tijd 00:00:00. Is de timestamp van je artikel kleiner, dan is het voor de dag geplaatst.En die vergelijking is simpel aan te passen zodat je controleert of de timestamp groter of gelijk is dan de dag van morgen met de tijd 00:00:00.

Echt rocket science is het niet hoor. Dit soort zaken zou je toch echt zelf moeten kunnen bedenken....

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het is me inderdaad gelukt, ik zat zoals Creepy ook al hintte, veel te moeilijk te denken :(

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function maakNieuwsDatumKort($value)
{
    setlocale(LC_ALL, "nl_NL");
    $result = $value;
    $result = strtotime($result);
    
    $today = strftime("%Y-%m-%d 00:00:00", time());
    $today = strtotime($today);
    
    // Kijken of de datum vandaag is ( 11:34 )
    if (($result - $today) > 0)
    {
        // Vandaag, dus tijd geven
        $result = strftime("%H:%M", $result);
    }
    else
    {
        // Niet vandaag dus datum geven ( 18/03 )
        $result = strftime("%d/%m", $result);
    }
    return $result;
}

Acties:
  • 0 Henk 'm!

  • _Gekkie_
  • Registratie: Oktober 2000
  • Laatst online: 24-06 20:21

_Gekkie_

And the cow said: Helloooooow?

Je zou ook vrij eenvoudig $isVandaag = (date('dmY', strtotime($value)) == date('dmY'));

toch?

Gekkie is a proud member of TheBenny!


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Het kan ook op 1 regel ja. Je kan ook een extra 'IF(conditie, 1, 0) as IsToday' in je SELECT opnemen etc. etc. Het kan gewoon op 1001 manieren. :P Als je maar date funcs gebruikt en niet de denkfout maakt dat rekenen met datums/tijden zelf makkelijk te doen is.

{signature}

Pagina: 1