Aantal dagen bereken mbv diff()

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior Front end developer

Functie Jij als developer gaat ons helpen onze producten verder te ontwikkelen en in te zetten in de markt. Op dit moment bestaat ons SaaS product uit 3 componenten die zowel los als in een pakket gekocht kunnen worden. Het gaat hier om een online kaartapplicatie, een workflow tool en een monitoring tool. Momenteel zijn wij 3 jaar geleden gestart met de ontwikkeling. De tech-stack waarmee we werken is voornamelijk Javascript, Vue.js en Python. Daarnaast gebruiken wij FaundaDB als database en werken we veel met GIS applicaties. De uitdaging die we momenteel hebben is dat we momenteel een intern team

Bekijk vacature »

Randstad - Freelance Backend Developer/ Data Engin

Starting date: 10.05.2023 Salary range: €67,00 - €77,00 Duration: 6 months Hours: 40 Working model: Hybrid* MUST be NL based Job description: Our vision is to have a consistent and data driven experience for all sales across all our operating companies. Our mission is to enable our salespeople to be able to reach out to the right company at the right time. We do this by creating data driven micro services and solutions. We mainly focus on implementation in the Google Cloud but also integrate with local systems and other cloud solutions. A typical day: As a back-end developer you

Bekijk vacature »

Medior PHP developer

Functie Samen met je development team werk je Agile Scrum en met jullie gezamenlijke kennis en ervaring bepalen jullie samen de beste keuze voor techniek en architectuur. Naast het ontwikkelen van software ben je continue bezig om ook jezelf te ontwikkelen. Ze werken met o.a.: PHP, Laravel, Doctrine, PHP Unit, Behat, React, TypeScript, (My)SQL, Postgress, Redis, ElasticSearch, Docker, Nginx, GIT flow, JIRA, AWS. Eisen • HBO werk- en denkniveau • Je hebt goede kennis en ervaring met PHP • Je bent niet bang voor complexe projecten • Je werkt graag zelfstandig aan applicaties • Je bent altijd nieuwsgierig naar nieuwe

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Freelance Fullstack Java Developer

Functieomschrijving Voor een opdrachtgever in omgeving Rotterdam zijn wij op zoek naar ervaren Fullstack JAVA Developers die graag op projectbasis willen werken. Je komt terecht bij een informele developers club die mooie projecten uitvoeren voor grote klanten. Ben je een ervaren freelancer of werk je in loondienst en ben je toe aan een nieuwe uitdaging? Lees dan snel verder want wie weet is dit een leuke vacature voor jou! Het fijne van deze werkgever is dat je zelf mag beslissen hoe je te werk wilt gaan. Wil je als freelancer werken dan is dat OK. Wil je de zekerheid hebben

Bekijk vacature »

Back-end Developer

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een gewaardeerde werkgever in regio Oosterhout zijn wij op zoek naar een back-end developer. Kennis of ervaring met C# & SQL is een must! Je bent verantwoordelijk voor de beheer en ontwikkeling van de software; Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je test de software en ontwikkelt deze door; Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten; Je brengt de aanpassingssuggesties van klanten in kaart, om

Bekijk vacature »

C# .Net Developer

Dit ga je doen Het bouwen van Api's; Nieuwe oplossingen bouwen met C# .Net; De huidige software uitbouwen met C# .Net; Meewerken in projecten; Meedenken aan de toekomstplannen en verbeteringen; Onderdeel van het Scrum Team. Hier ga je werken Onze klant is een dienstverlenende organisatie voor diverse soorten organisaties in Nederland. Ze zijn van oorsprong een familiebedrijf en er is een open cultuur. Ze zijn vooruitstrevend op IT gebied en hebben een eigen inhouse development team van circa 11 man. Je komt hier te werken in het subteam .Net Core. Hier werken ze volgens scrum met de nieuwste technieken en

Bekijk vacature »

Node.js developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »

Scrum Master

TenneT is hard groeiend om de onze ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Scrum master op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je begeleidt twee teams binnen de afdeling Platform Services (PLS). Je helpt mee de devops manier van werken van de teams verder door te ontwikkelen. Je helpt de PO bij het managen van de product backlog; het voorbereiden van

Bekijk vacature »

Junior .NET developer

Functie Wij hebben drie scrumteams. Het eerste team focust zich op het stukje hardware wat wij in huis doen. Zij maken als team o.a. gebruik van C++. De andere twee scrumteams zijn allebei bezig met data verwerking en maken hierbij in de backend gebruik van C# .NET / .NET Core. Het verschil tussen deze teams is dat één team de data verwerking doet voor de mobiele applicatie. Zij werken hierbij dus ook met Xamarin. Het andere team focust zich op de webapplicaties en maakt hierbij ook gebruik van ASP.NET MVC. Op basis van jouw ambities en kwaliteiten kijken wij samen

Bekijk vacature »

Software Developer C# .NET

Functie omschrijving Software Developer C# .NET gezocht voor een dynamische organisatie! Ben jij net afgestudeerd of toe aan een volgende stap in je maatschappelijke carrière? Lees dan snel verder! Wij zijn op zoek naar een Software Developer die klaar is voor een nieuwe uitdaging en die een organisatie in de regio Houten wil versterken. Je werkt in deze functie aan verschillende projecten en gaat vaak op bezoek bij klanten. In deze functie kun je een grote mate van uitdaging, diversiteit en verantwoordelijkheid verwachten. Bedrijfsprofiel Waar kom je te werken? Je komt te werken bij een organisatie dat gespecialiseerd is in

Bekijk vacature »

Mendix Consultant / Developer

Dit ga je doen Het in kaart brengen en analyseren van de functionele wensen van de klant rondom Mendix applicaties; Het fungeren als sparringpartner voor de (interne) klanten; Het opstellen van requirements en het vertalen hiervan naar technische mogelijkheden; Het opstellen van user stories; Het bouwen van de Mendix applicaties in samenwerking met jouw team of zelfstandig; Het testen van op te leveren software en het zorg dragen voor de implementatie; Trainen van gebruikers in het gebruik van de applicatie; Werken in een Agile omgeving. Hier ga je werken De organisatie begeeft zich in de retail branche en focust zich

Bekijk vacature »

Software developer

Werkzaamheden voor jou als software developer Voor een goede relatie in de regio Zwolle (meerdere locaties) zoeken wij een software developer die betrokken is bij de ontwikkelcyclus en verantwoordelijk is voor het testen en keuren van nieuwe en geoptimaliseerde software. In deze functie ben je in de implementatiefase de persoon die risico's beoordeelt en intern oplossingen aanbrengt om risico's te verkleinen. Binnen het ontwikkelteam van de software ben je een belangrijke schakel waar je intensief meewerkt met scrum. Het voorkomen van bugs in de programma's en het bevorderen van gebruiksvriendelijkheid voor eindklanten zijn voor jou een uitdaging en geeft voldoening

Bekijk vacature »

Magento2 Developer

Functie Ben jij een ontwikkelaar en wil jij een volgende stap zetten en als teamlead aan de slag? Lees dan snel verder! Voor een gewilde opdrachtgever in omgeving Delft zijn wij op zoek naar een programmeur die als meewerkend voorman aan de slag wilt gaan. Een developer die een team van twee man aan zal sturen. Jouw werkzaamheden zullen er als volgt uitzien; Ontwikkelen en ontwerpen van API's; Maatwerkoplossingen; Databeveiliging; Optimalisatie webshops; Ontwikkelen technische implementaties voor verbetering database; Aanspreekpunt voor de organisatie en verantwoordelijk voor de aansturing van externe developers. Zoek je veel uitdaging en veelzijdigheid in je werk dan

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »
- DHU -

- DHU -

31/03/2020 21:28:29
Quote Anchor link
Hi Guyz,

Ik zit weer eens met een vraagstuk... ik wil het aantal dagen bereken tussen twee datums..

daarvoor dacht ik onderstaand stukje codering te kunnen gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
//* RECONCILATION INSTELLINGEN        
$originalReconcileDate = $sqlData['Z_SYSTEM_RECONCILE_TIMESTAMP'];
$dateToday = new DateTime(date("Y-m-d H:i"));
$newReconcileDate = date("d-m-Y H:i", strtotime($originalReconcileDate));
$diff = $dateToday->diff($originalReconcileDate);
            
if($newReconcileDate == "01-01-1970"){
echo '<td></td>';
}else{
echo '<td>'.$newReconcileDate.'</td>';
}



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?
 
PHP hulp

PHP hulp

26/05/2026 12:29:00
 
- Ariën  -
Beheerder

- Ariën -

31/03/2020 21:53:06
Quote Anchor link
De error is toch duidelijk?

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.

Big chance dat het dan beter gaat.
Gewijzigd op 31/03/2020 21:54:33 door - Ariën -
 
- DHU -

- DHU -

31/03/2020 22:16:35
Quote Anchor link
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
 
Thomas van den Heuvel

Thomas van den Heuvel

31/03/2020 22:22:16
Quote Anchor link
$newReconcileDate zou dus geen date() (timestamp) moeten zijn, maar een DateTime-object, dan kun je met diff() aan de slag.

edit: en je hebt dus sowieso $newReconcileDate nodig (maar dan in het goede formaat), en niet $originalReconcileDate :).
Gewijzigd op 31/03/2020 22:24:32 door Thomas van den Heuvel
 
- Ariën  -
Beheerder

- Ariën -

31/03/2020 22:33:48
Quote Anchor link
Dirk Huizinga op 31/03/2020 22:16:35:
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

Gelukkig heb je ook https://www.php.net/manual/en/class.datetime.php
En dan de Table of Contents, waarin de functies worden besproken.
 
Thomas van den Heuvel

Thomas van den Heuvel

31/03/2020 22:40:25
Quote Anchor link
@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.
 
- DHU -

- DHU -

31/03/2020 22:50:37
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

31/03/2020 23:15:29
Quote Anchor link
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. ;-)
Gewijzigd op 31/03/2020 23:15:41 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

31/03/2020 23:22:52
Quote Anchor link
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.
 
- DHU -

- DHU -

01/04/2020 10:56:14
Quote Anchor link
Om het proces af te ronden :-)

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
//* 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....

Bedankt voor alle goed bedoelde adviezen.
Gewijzigd op 01/04/2020 10:57:32 door - DHU -
 
Ivo P

Ivo P

01/04/2020 19:55:00
Quote Anchor link
Wist je dat Mysql dat ook al voor je uit kan rekenen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
SELECT Z_SYSTEM_RECONCILE_TIMESTAMP, TO_DAYS(Z_SYSTEM_RECONCILE_TIMESTAMP) - TO_DAYS(NOW()) as verschil
FROM tabel
 
Jan R

Jan R

01/04/2020 20:42:16
Quote Anchor link
Ik lees elke keer iets van jou als "de handdoek in de ring gooien". Als je de fout gewoon googled zie je dat er al velen voor jou ook het probleem hadden. Ik hoor er ook bij. Je moet natuurlijk wel ook eens iets proberen.
Met vallen en opstaan lukt veel. Ok het gaat wat traag:)
Je kan toch niet willen dat de mensen hier jouw code schrijven.

Enkel als voorbeeld: Net een scriptje van vroeger eens hermaakt. Dubbel zo snel en 3k kleiner. Gewoon betere query's.
 
- DHU -

- DHU -

01/04/2020 21:26:54
Quote Anchor link
Ivo P op 01/04/2020 19:55:00:
Wist je dat Mysql dat ook al voor je uit kan rekenen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
SELECT Z_SYSTEM_RECONCILE_TIMESTAMP, TO_DAYS(Z_SYSTEM_RECONCILE_TIMESTAMP) - TO_DAYS(NOW()) as verschil
FROM tabel




Hmmm interesting.. thnx... Ga ik zeker mee experimenteren. Heb nl wel op meerdere plekker het vershil dagen benodigd.. Lekker kort en krachtig. Komt de code alleen maar ten goede
 
Thomas van den Heuvel

Thomas van den Heuvel

02/04/2020 02:18:55
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
//* 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>';
}

?>

Je maakt hier wel een fout, en een aantal dingen kunnen handiger gestructureerd worden. Je kunt er natuurlijk ook voor kiezen om alles in de query te regelen maar mogelijk is het handiger/makkelijker om code aan te passen dan SQL, dit moet je zelf weten.

Allereerst (en dit is dus een echte fout): DateInterval heeft formatteringsregels die mogelijk anders werken dan je zou denken. Het %d formatteringskarakter geeft je het aantal dagen verschil na aftrek van eventuele maanden.

Stel je hebt dus bijvoorbeeld 1 april en 2 mei, dan levert %d jou 1 (1 maand en 1 dag) in plaats van 31 dagen, wat je misschien zou verwachten. Hiervoor is %a bedoeld, zie ook de documentatie. Misschien wil je dat nog even aanpassen als je deze aanpak nog gebruikt voordat er mensen in de paniek schieten :p.

Dan ga je dingen uitrekenen die mogelijk helemaal niet uitgerekend hoeven te worden. Nu maakt dat in dit geval niet zo uit voor de snelheid, maar wat als deze berekening vele male complexer/duurder was? Staat je webserver mogelijk heel vaak te stampen op dingen die niet eens nodig zijn... dit is pure verspilling. Begin dus met het if-statement.

Ook kun je de programmeer- en weergavelogica verder uit elkaar trekken zodat je uiteindelijk een duidelijke streep tussen deze twee kunt aanbrengen.

Bijvoorbeeld dus als volgt:
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
<?php
if ($sqlData['originalReconcileDate'] == NULL) {
    $class = 'warning'; // geef het ding een opmaak
    $output = 'Nog geen recon ingericht!';
}
else {
    // hier ga je pas rekenen
    $reconDay = new DateTime($sqlData['originalReconcileDate']);
    $dateToday = new DateTime();
    $diff = $dateToday->diff($reconDay);

    $class = 'message';
    $output = $reconDay->format('d-m-Y').' <span>('.$diff->format('%a').' dag(en) geleden)</span>';
}

?>
<td class="<?php echo $class; ?>"><?php echo $output; ?></td>

Hier verplaats je ook hoe td.warning, td.message en td.message span er verder uitzien naar een stylesheet, dit wil je loskoppelen van de HTML, mocht je dit ooit nog willen aanpassen dan kun je dat puur in CSS regelen en hoef je geen code op te breken...
Gewijzigd op 02/04/2020 02:27:35 door Thomas van den Heuvel
 
- DHU -

- DHU -

02/04/2020 21:02:02
Quote Anchor link
Top dank je wel voor je uitgebreide toelichting. De DateInterval had ik inderdaad gelezen maar vergeten aan te passen. Dit is inmiddels doorgevoerd.

Ik heb dit nooit kunnen bedenken om een berekening met if statement te beginnen. Maar ondank ik in dit geval niet zoveel merk van de berekeninstijd hoor... deze gaat rap genoeg..maar inderdaad met 'n wat complexere berekening zou dit zo maar anders kunnen. Goed punt.

Dan over de opmaak... ik ben ook maar 'n ouwe zak hoor.. ik kom nog uit de html 1.0 periode. CSS wat was dat :-)
Ben daar helemaal niet in meegegroeid dus ik betrap me er vaak op dat ik de opmaak elke keer tussen de codering plaats. Ook hier onderga ik nog een leerproces:

Maar ik wil je nogmaals bedanken voor deze toelichting. Top!!!
 



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.