Archief - Tijd checker

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Unrach

Legacy Member
Hey allemaal,

Ik heb al wat zitten google maar vind niet precies wat ik nodig heb.
De bedoeling is om te kijken of een bepaald item wat gepost word ouder is dan een maand. Als dat niet is staat er een "new" icoontje voor.

In mijn database gebruik ik de timestamp. Een voorbeeld hiervan is: "2010-01-28 13:01:02"

Via google heb ik al gevonden dat ge met de "$now = new DateTime();" de huidige tijd in de variabele "$now" kunt steken. Maar dan zit ik vast. Hoe kan ik het verschil nemen met de tijdswaarde uit mijn "$row["TIME"]"?

Alvast bedankt!

adrianhates

Legacy Member
SELECT * FROM table WHERE datum > ( CURDATE( ) -30 )
of
SELECT * FROM table WHERE DATEDIFF(day,uwdatum,CURDATE()) > 28

( ni getest )

woony

Legacy Member
adrianhates zei:
SELECT * FROM table WHERE datum > ( CURDATE( ) -30 )
of
SELECT * FROM table WHERE DATEDIFF(day,uwdatum,CURDATE()) > 28

( ni getest )

daarme beperk je hem tot enkel deze op te halen die voldoen aan die data criteria, en denk niet dat het de bedoeling is?

Ik dacht meteen aan datediff functie in vbscript. ( programmeer zeer veel in asp1 & vbscript ) dus google, datediff in php, resultaat.
PHP DateDiff Function - Added Bytes
ik dacht dat dergelijke functie wel in php ging zitten, blijkbaar niet. Maar met bovenstaande functie kun je wel weg.

functie gebruiken, en dan iets als echo
datediff('m', $datumvanpost, now() , false);

Unrach

Legacy Member
woony zei:
daarme beperk je hem tot enkel deze op te halen die voldoen aan die data criteria, en denk niet dat het de bedoeling is?

Ik dacht meteen aan datediff functie in vbscript. ( programmeer zeer veel in asp1 & vbscript ) dus google, datediff in php, resultaat.
PHP DateDiff Function - Added Bytes
ik dacht dat dergelijke functie wel in php ging zitten, blijkbaar niet. Maar met bovenstaande functie kun je wel weg.

functie gebruiken, en dan iets als echo
datediff('m', $datumvanpost, now() , false);

Thx das inderdaad waar ik naar op zoek ben.

Ik heb diene link is wa gelezen en dit zou mijn code moeten zijn om het verschil op te roepen:

PHP:
include("include/timechecker.php");
				
$datum = $row["TIME"];
$now = new DateTime();
echo datediff('m', $datum, $now , true);

in de timechecker.php zit de functie maar jammer genoeg geeft hij in dat bestand een fout. Mijn kennis van php is ook te min om al die code te snappen dus ik durf er ook niets aan te veranderen.

Hij geeft deze fout op mijn pagina:
Code:
WARNING: DATE() EXPECTS PARAMETER 2 TO BE LONG, OBJECT GIVEN IN /HOME/THINI/PUBLIC_HTML/D3/INCLUDE/TIMECHECKER.PHP ON LINE 52

En dit is wat er rond line 52 staat:

PHP:
case "m": // Number of full months

         $months_difference = floor($difference / 2678400);
L52:   while (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom)+($months_difference), date("j", $dateto), date("Y", $datefrom)) < $dateto) {
            $months_difference++;
        }
        $months_difference--;
        $datediff = $months_difference;
        break;

Alvast bedankt voor de reactie! Het heeft me toch al wat verder geholpen.

woony

Legacy Member
die error wijst waarschijnlijk op het formaat van uw parameter. int, float, long ...
kun je uw datum ook als date definieren ipv datetime ofzo.
wat geeft print van uw $now? mss staat er tijdsgegeven bij en mag dit niet.

Unrach

Legacy Member
woony, heel fel bedankt (+rep ;)) maar ik heb wat anders zitten nadenken en het is gelukt op een andere manier. Ik heb namelijk de datums veranderd naar een nummer wat er mee overeen komt. 2505600 komt overeen met 30 dagen verschil. Dus:

PHP:
list($date, $time) =str_split($row["TIME"],11);
$now= date("Y-m-d", time());
				
$nownew = strtotime($now);
$datenew = strtotime($date);
				
$diff = $nownew - $datenew;
				
if ($diff <= 2505600){
	echo '<img src="img/new.png" alt="New" />';
}

Het is nogal stom dat ik hier niet eerder aan gedacht heb. Anders had ik deze thread niet moeten openen. Mja.. het kan nog altijd handig zijn voor de googlers :-)

woony

Legacy Member
Unrach zei:
woony, heel fel bedankt (+rep ;)) maar ik heb wat anders zitten nadenken en het is gelukt op een andere manier. Ik heb namelijk de datums veranderd naar een nummer wat er mee overeen komt. 2505600 komt overeen met 30 dagen verschil. Dus:

PHP:
list($date, $time) =str_split($row["TIME"],11);
$now= date("Y-m-d", time());
				
$nownew = strtotime($now);
$datenew = strtotime($date);
				
$diff = $nownew - $datenew;
				
if ($diff <= 2505600){
	echo '<img src="img/new.png" alt="New" />';
}

Het is nogal stom dat ik hier niet eerder aan gedacht heb. Anders had ik deze thread niet moeten openen. Mja.. het kan nog altijd handig zijn voor de googlers :-)

hm, geef eens een voorbeeldje met effectieve 'nummers' , ik zie het precies niet :) hoe je van 30 dagen aan 2505600 komt.. ben benieuwd :)

Unrach

Legacy Member
woony zei:
hm, geef eens een voorbeeldje met effectieve 'nummers' , ik zie het precies niet :) hoe je van 30 dagen aan 2505600 komt.. ben benieuwd :)

Ik heb het getest met een aantal datum waardes. En het komt allemaal mooi uit tussen 2505600 voor 30 dagen en 0 voor 0 dagen. Het is ook maar iets wat ik op google gevonden heb, maar het werkt perfect.

Dit is de website waar ik dit aan het doen ben: klik

Er zit wel nog een foutje in dat hij ascending sorteerd en door een foute query ooit is van een aantal items de tijd gereset geweest, die data moet terug worden ingegeven.

Maar als je naar onder scrold zie je daar die groene symbooltjes wat aangeeft dat het binnen de 30 dagen gepost was. (en ja dat icoontje word nog veranderd, het was maar om te testen ^^)

woony

Legacy Member
die werkwijze ben ik wel eens benieuwd naar.
is gewoon int maken van uw datum ofzo?

nuja als het werkt :) des te beter e.

Curahee Q

Legacy Member
Heb het even bekeken en dat is de tijd in seconden. Echter scheelt het wel 1 dag

29 dagen -> 2505600 seconden
30 dagen -> 2592000 seconden

Rechtstreeks van php.net over strtotime
The function expects to be given a string containing a US English date format and will try to parse that format into a Unix timestamp (the number of seconds since January 1 1970 00:00:00 UTC)

Als je dus de strtotime() van nu hebt, en je trekt daar de strtotime() van een bepaalde post vanaf heb je dus het verschil in seconden. Zet dit om en je weet het aantal dagen.

Unrach

Legacy Member
Ah voila.. iemand die het kan uitleggen :D handige functie moek wel zegge :p

woony

Legacy Member
hm ok, ik vind het maar een rare werkwijze. Als het maar werkt e:)

Unrach

Legacy Member
woony zei:
hm ok, ik vind het maar een rare werkwijze. Als het maar werkt e:)

Hehe.. daar ben ik al blij mee, als het maar werk :D want mijn kennis van php is niet vet veel :p

dJeez

Legacy Member
Waarom eigenlijk al de conversies nog doen in PHP als je dat al rechtstreeks in de query kan doen?

MySQL :: MySQL 5.1 Reference Manual :: 11.6 Date and Time Functions

Nu zit je overigens de huidige tijd om te zetten naar een string om die vervolgens weer te converteren naar de originele waarde met strtotime (weliswaar zonder rekening te houden met uur, minuten en seconden), het nut daarvan ontgaat mij :p.

Unrach

Legacy Member
dJeez zei:
Waarom eigenlijk al de conversies nog doen in PHP als je dat al rechtstreeks in de query kan doen?

MySQL :: MySQL 5.1 Reference Manual :: 11.6 Date and Time Functions

Nu zit je overigens de huidige tijd om te zetten naar een string om die vervolgens weer te converteren naar de originele waarde met strtotime (weliswaar zonder rekening te houden met uur, minuten en seconden), het nut daarvan ontgaat mij :p.

Zoals ik al zei is mijn kennis van php niet zo heel veel. Toen ik die string functie had gevonden op google en het werkte was ik al heel blij.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan