echter ik krijg de foutmelding:
Warning: DateTime::diff() expects parameter 1 to be DateTimeInterface, string given in C:\wamp64\www\BP\members\inc\plugin.php on line 2332
echter ik kan 'm niet plaatsen... zal wel iets lulligs zijn maar ik staar me blind.... iemand een idee waar het manco zich bevind?
Er wordt een DateTimeInterface verwacht, en geen string uit je database: $originalReconcileDate.
Dus gebruik $dateToday als argument in die $diff, en gebruik $sqlData['Z_SYSTEM_RECONCILE_TIMESTAMP'] in je new DateTime.
De error is niet duidelijk!
Niet iedereen zit op Admin niveau :-).... ik probeer het te begrijpen.. (Wat me overigens nog niet lukt hoor.. maar dat terzijde)...
ik doe ook mijn stinkende best..... en gaat wel steeds beter maar ik wil d'r steeds wat bij leren... en ik ik wil het dan ook snappen... maar t'is en blijft lastig om met datums te klooien
De error is niet duidelijk!
Niet iedereen zit op Admin niveau :-).... ik probeer het te begrijpen.. (Wat me overigens nog niet lukt hoor.. maar dat terzijde)...
ik doe ook mijn stinkende best..... en gaat wel steeds beter maar ik wil d'r steeds wat bij leren... en ik ik wil het dan ook snappen... maar t'is en blijft lastig om met datums te klooien
@Ariën heeft wel een punt. Leren programmeren wordt zoveel makkelijker wanneer je de foutmeldingen kunt interpreteren. Dit verschaft je enorm veel inzicht. Plus alles is goed gedocumenteerd op php.net. Je kunt daar gewoon DateTime in het zoekvakje inkloppen en je krijgt direct (klasse)definities.
Op deze manier kun je op den duur precies identificeren waar het misgaat, en wat er misgaat. En op een gegeven moment wordt het letten op dit soort fouten tijdens het schrijven van code een tweede natuur, zodat je deze in eerste instantie niet meer maakt, of in ieder geval een groter bewustzijn hebt van de typen van de parameters die functies en methoden verwachten, deze zijn namelijk bijna altijd van een redelijk specifieke voorgeschreven vorm.
In zekere zin is dit weer een vraagstuk waar "het probleem niet het probleem" is, maar het verzamelen van informatie over + het interpreteren van de foutmelding.
Zucht.... het is toch niet te doen om hele master class te moeten volgen om twee datums van elkaar af te trekken... gooi de handdoek dan maar meteen in de ring en gaat men maar lekker die datums met hoof uitreken...
Je moet verdorie op php.net elke keer een hele statenbijbel doornemen....
jongens bedankt voor het pogen.... maar dit gaat met teveel tijd inzitten.. als ik ooit eens wat meer tijd heb ga ik me er misschien in verdiepen.
Je overdrijft wel behoorlijk hoor met je 'master-class'.
Misschien dat je het nu even niet ziet zitten om je concentratie erbij te houden. Ga dan even wat anders doen: Boek lezen, kattenfilmpjes kijken, of lekker naar bed en dan ben je morgen weer fris en fruitig. ;-)
Maar er wordt je twee keer verteld wat je zou moeten aanpassen.
Je moet het zo zien, de methode verwacht een appel, en je stopt er een peer in. Dat past niet. Zorg dat het formaat appel is, en het gaat goed.
En blijkbaar geldt er ook een speciale conditie ($newReconcileDate == "01-01-1970"), in welk geval je in het geheel geen vergelijking hoeft te doen? Mogelijk is het een idee om die datums dan als NULL-waarde op te slaan in je database, dan kun je simpelweg vergelijken met NULL.
Wat is trouwens het formaat van $sqlData['Z_SYSTEM_RECONCILE_TIMESTAMP']? Is dit gewoon een UNIX-timestamp? Dan kan de code waarschijnlijk ook nog wat korter. Helemaal handig zou het zijn als deze informatie ook gewoon als (NULLable) DATETIME-kolom wordt opgeslagen, dan hoef je ook niet tig vertaalslagen uit te voeren.
ik heb in mijn SQL SELECT de datum format van de tabel Z_SYSTEM_RECONCILE_TIMESTAMP aangegeven. De uren, minuten en secondes zijn in deze nl niet zo van belang.
Dit heb ik als volgt gedaan:
$sql = "SELECT DATE_FORMAT(idm_doelsysteem.Z_SYSTEM_RECONCILE_TIMESTAMP, '%d-%m-%Y') AS originalReconcileDate,
enz, enz enz
Voor uiteindelijk het verschil tussen twee datums weer te geven heb ik dit als volgt gedaan:
//* RECONCILATION INSTELLINGEN
$reconDay = new DateTime($sqlData['originalReconcileDate']);
$dateToday = new DateTime();
$diff = $dateToday->diff($reconDay);
if($sqlData['originalReconcileDate'] == NULL){
echo '<td><font color="red">Nog geen recon ingericht!</font></td>';
}else{
echo '<td>'.$reconDay->format('d-m-Y').' <font size="1">('.$diff->format('%d dagen geleden').')</font></td>';
Opmerking: Goeie tip om wat anders te doen. Als je er een lange dag op hebt zitten en en je blind staart moet je dit soort dingen dus gewoon niet doen....