beste manier van tijd berkenen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Donny Wie weet

Donny Wie weet

17/04/2014 16:01:37
Quote Anchor link
Hoi allemaal,

Er zijn zoveel manieren om het aantal dagen te berekenen tussen 2 datums, maar wat is nou de beste manier? Dagen moeten ook in het verleden kunnen, dus -9 dagen bijvoorbeeld.
 
PHP hulp

PHP hulp

24/04/2024 16:31:37
 
Michael -

Michael -

17/04/2014 16:04:06
Quote Anchor link
Ligt er ten eerste al aan of het om PHP of een database gaat.
Database met INTERVAL, PHP vind ik het makkelijkst met datetime
Gewijzigd op 17/04/2014 16:04:35 door Michael -
 
Donny Wie weet

Donny Wie weet

17/04/2014 16:21:25
Quote Anchor link
Ik heb de laatst nieuwe PHP versie maar krijg een error dat die class niet gevonden kan worden. Iemand een idee hoe dat kan?

Toevoeging op 17/04/2014 16:24:43:

Ghehe... Als ik geen \ erbij zet doet ie het niet ghehehe :P
 
John D

John D

17/04/2014 16:27:28
Quote Anchor link
Gaat het om tijd die afkomstig is uit de database of geladen moet worden in de database dan is SQL de snelste en de beste manier. Alles wat je niet in php hoeft te berekenen is winst. PHP rekent relatief traag. Dus nooit allerlei data ophalen uit de database en dan gaan processen in php, array's met data, afkomstig uit de database, aflopen is nooit de juiste oplossing. Als het kan met SQL dan altijd met SQL doen! Het ontbreken van diepgaande SQL kennis mag nooit een excuus zijn om hele bakken met data in PHP loopjes te processen.
Gewijzigd op 17/04/2014 16:29:33 door John D
 
Donny Wie weet

Donny Wie weet

17/04/2014 17:10:47
Quote Anchor link
De tijden worden geconverteerd naar een string. Het lukt allemaal prima om de waardes op te halen maar heb wat moeite met het reken gedeelte. Er is voor de aanbieding een start en eind datum. Hiermee moet weergeven worden of de aanbieding geldig is of niet. Ik krijg dit niet voor elkaar... Kan iemand mij helpen? Zit nou echt al een uur te kloten ermee en krigj hoofdpijn ervan :S

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
<?php

public function activity($start, $stop){

        $dateNow    = new \DateTime('NOW');
        $dateStart     = new \DateTime($start);
        $dateEnd     = new \DateTime($stop);
        //Aantal dagen dat de aanbieding geldig is
        $duration = $dateStart->diff($dateEnd)->format('%a dag(en)');
        $returnDuration = 'De aanbieding is'.$duration .' geldig';
        //Aantal dagen dat de aanbieding ingaat
        $discountStart = $dateNow->diff($dateStart)->format('%R%a dag(en)');
        $discountStartMessage = 'De aanbieding gaat in over '.$discountStart;
        $discountStop = $dateNow->diff($dateEnd)->format('%R%a dag(en)');

        //Aanbieding verlopen
        if($dateNow >= $dateStart && $dateEnd <= $dateNow){
            return 'Aanbieding is verlopen.';
        }
elseif($dateNow >= $dateStart){
            return 'Aanbieding is actief';
        }
else {
            return 'De aanbieding gaat in over'. $discountStart.'. Deze is geldig voor'.$duration;
        }
    }


?>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

17/04/2014 18:48:05
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
13
14
15
16
17
18
<?php

$startdate
= new DateTime('5-4-2014');
$stopdate = new DateTime('12-4-2014');
$now = new DateTime();

if($now->diff($startdate)->invert && !$now->diff($stopdate)->invert)
    echo 'Nu in de aanbieding';
else
{
    if(!$now->diff($startdate)->invert)
        echo 'Deze aanbieding gaat in over ' . ($now->diff($startdate)->d + 1) . ' dagen.';
    else {
        echo 'Deze aanbieding is al geweest.';
    }
}


?>


Toevoeging op 17/04/2014 18:59:42:

Op regel 12 heb ik het verschil in dagen met één dag verlengd omdat php dit zegt:

het is nu 17-4-2014 19:30:00 dus gaat de aanbieding in over 1 dag, 4 uur en 30 minuten.

Dat is meer dan één dag dus vandaar dat we van die 1 dag, 2 dagen maken door + 1 te doen.
Gewijzigd op 17/04/2014 18:56:10 door Frank Nietbelangrijk
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

17/04/2014 19:23:00
Quote Anchor link
Hetzelfde geldt voor de einddatum, als de aanbieding vandaag afloopt is ie in zoals jij het doet nu verlopen.

Toevoeging op 17/04/2014 19:42:47:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT
    DATEDIFF(CURRENT_DATE, start_date) days_to_start,
    DATEDIFF(CURRENT_DATE, end_date) days_to_end
FROM
    special_prices


Met die 2 gegevens kan je alles afvangen.
 



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.