Rekenen met tijd

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Knorfski

Knorfski

09/12/2005 19:58:00
Quote Anchor link
Hallo,

Ik ben met mij site bezig en ik zit met een probleempje, ik heb een script waarbij je 2 datums moet opgeven en dan rekent het script uit hoeveel dagen/weken/maanden er tussen die twee datums zitten.

Het liefste zou ik een klein voorbeeld scriptje willen hebben.

Alvast bedankt! :)
 
PHP hulp

PHP hulp

19/11/2024 09:40:10
 
Han eev

Han eev

09/12/2005 20:01:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?PHP
$tijd1
= strtotime($jevergelijktijd1);
$tijd2 = strtotime($jevergelijktijd2);
$temp = $tijd1-$tijd2;
echo date('Y-m-d',$temp).' Verschil';
?>
 
Robert Deiman

Robert Deiman

09/12/2005 20:03:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?PHP
$tijd1
= strtotime($jevergelijktijd1);
$tijd2 = strtotime($jevergelijktijd2);
$temp = $tijd1-$tijd2;
echo date('d',$temp).' Dagen ';
echo date('m',$temp).' Maand ';
echo date('Y',$temp).' Jaar verschil';
?>
 
Knorfski

Knorfski

09/12/2005 20:04:00
Quote Anchor link
Han en Robert :D Bedankt! :D

Nog even een klein vraagje,

De datums mogen elkaar niet overlappen, hoe zouden jullie mij dat aanraden om dat aan te pakken.

Edit: Snelle reactie hier :D
Gewijzigd op 09/12/2005 20:05:00 door Knorfski
 
Robert Deiman

Robert Deiman

09/12/2005 20:06:00
Quote Anchor link
Mogen elkaar niet overlappen? bedoel je dat $tijd1 niet groter mag zijn dan tijd2?

Dan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?PHP
$tijd1
= strtotime($jevergelijktijd1);
$tijd2 = strtotime($jevergelijktijd2);
if($tijd1 < $tijd2){
$temp = $tijd1-$tijd2;
echo date('d',$temp).' Dagen ';
echo date('m',$temp).' Maand ';
echo date('Y',$temp).' Jaar verschil';
}

else{
echo $tijd1." is kleiner dan: ".$tijd2;
}

?>
 
Knorfski

Knorfski

09/12/2005 20:08:00
Quote Anchor link
Ik moet een camping systeem maken, en als er dan 2 mensen boeken dan mogen die tijden elkaar niet overlappen, anders heb je een dubbelboeking.
 
Robert Deiman

Robert Deiman

09/12/2005 20:12:00
Quote Anchor link
Kan je iets duidelijker zijn? werk je met een database? En welke tijden heb je het precies over. We werken nu met maar 2 data, en ik heb je al laten zien hoe je kan controleren of de 2e datum kleiner is dan de 1e datum..
Maar dat is dus niet de bedoeling.. graag wat meer info.
 
Knorfski

Knorfski

09/12/2005 20:17:00
Quote Anchor link
Ik werk met een database :)

En ik maak een management systeem voor een camping, dus als er een klant bij de balie staat en die zegt:'Ik wil graag een bungalowhuisje huren van 12-09-2005 tot 18-11-2005 huren' dan vuurt de balie medewerker een query af op de database en die komt terug met het resultaat: Huisje 1, 3, en 6 zijn nog vrij die tijd. de rest is al volgeboekt.

Maar ook dat als er geen plek meer is als hij dan ook een melding geeft als de camping vol is.
 
Eric Cartman

Eric Cartman

09/12/2005 20:19:00
Quote Anchor link
Hij bedoelt dat als iemand die bijvoorbeeld van 2 uur tot 4 uur boekt er niet iemand kan zijn die van 3 uur tot 5 uur op dezelfde plek (ik neem aan dat je per plek werkt) een plaatsje kan reserveren.

-- edit --
Je was me voor...
Gewijzigd op 09/12/2005 20:20:00 door Eric Cartman
 
Han eev

Han eev

09/12/2005 20:20:00
Quote Anchor link
Je moet een query maken die tussen die dingen selecteerd
 
Knorfski

Knorfski

09/12/2005 20:21:00
Quote Anchor link
Precies Jip,

En bedankt Han,

Ik had het op die manier nog niet bekeken.
 
Robert Deiman

Robert Deiman

09/12/2005 20:23:00
Quote Anchor link
Ok.. je hebt gezien hoe je die datum kan vergelijken? dan kan je controleren of de begindatum van de nieuwe reservering groter is dan de einddatum van de andere. Als dat het geval is, dan controleren of er IN DATZELFDE huisje nog een reservering is, die eerder begint dan de einddatum van de nieuwe reservering.

vb:
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
<?
$reservering_1
= '2005-12-12'; //einde eerste reservering
$reservering_2 = '2005-24-12'; //begin tweede reservering

$tijd1 = '2005-12-12'; // begin nieuwe reservering
$tijd2 = '2005-20-12'; // einde nieuwe reservering

if ($tijd1 >= $reservering_1 && $tijd2 < $reservering_2){
echo "dit huisje is vrij";
}

else{
echo "dit huisje is niet vrij";
}

?>
 
Knorfski

Knorfski

09/12/2005 20:42:00
Quote Anchor link
Dit is nu mijn code:

Ik krijg nu een reeks cijfers eruit :S

<link href="paginas/css/lettertypen.css" rel="stylesheet" type="text/css" />
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
27
28
29
30
31
32
33
34
35
36
37
38
<?php

$tijd
    =    date('Y-m-d');

$tijd1 = strtotime($tijd);
$tijd2 = strtotime('+1 day', $tijd);
$temp = $tijd1-$tijd2;
date('Y-m-d',$temp).' Verschil';

$dag1    =    strftime ("%d", $tijd1);
$maand1    =    strftime ("%m", $tijd1);
$jaar1    =    strftime ("%Y", $tijd1);

$dag2    =    strftime ("%d", $tijd2);
$maand2    =    strftime ("%m", $tijd2);
$jaar2    =    strftime ("%Y", $tijd2);

if($dag1    <>    $dag2)
{

$temp1    =    strftime ("%d", $temp);
$temp4    =    strtotime($temp1);
}


if($maand1    <>    $maand2)
{

$temp2    =    strftime ("%m", $temp);
$temp5    =    strtotime($temp2);
}


if($jaar1    <>    $jaar2)
{

$temp3    =    strftime ("%Y", $temp);
$temp6    =    strtotime($temp3);
}


echo $temp4.$temp5.$temp6;

?>
 
Willem Jan Z

Willem Jan Z

09/12/2005 20:44:00
Quote Anchor link
Zit er logica in de cijfers?
Probeer eens:
echo $temp4."-".$temp5."-".$temp6;
 
Knorfski

Knorfski

09/12/2005 20:45:00
Quote Anchor link
Ik kan er geen logica in ondervinden:

113410800011341260001134155100
 
Han eev

Han eev

09/12/2005 20:46:00
Quote Anchor link
En als je dit nog in een while loop bouwt met verschillende huisjes ben je zo'n beetje klaar.

Edit: laaaaat ^^
Gewijzigd op 09/12/2005 20:48:00 door Han eev
 
Jan Koehoorn

Jan Koehoorn

09/12/2005 20:53:00
Quote Anchor link
Hoi Knorfski,

het beste kun je dit doen met een datetime veld in een MySQL tabel. Voor twee afspraken die elkaar niet mogen overlappen stel je dan de volgende voorwaarde:

1) De begintijd van afspraak 1 moet NA de eindtijd van afspraak 2 liggen OF
2) De begintijd van afspraak 2 moet NA de eindtijd van afspraak 1 liggen.

in MySQL kun je een query opstellen die er zo uit ziet:

SELECT afspraak
FROM afspraken
WHERE
van < '$tot' AND tot < '$van'

Als die query 0 resultaten oplevert zijn er geen overlaps. Verder moet je natuurlijk controleren of de plekken gelijk zijn, zoals al gezegd werd
 
Knorfski

Knorfski

09/12/2005 20:53:00
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
//Tijd nu vaststellen
$tijd    =    date('Y-m-d');

//String naar tijd omzetten
$tijd1 = strtotime($tijd);

//Even de tijd een dag ophoog zetten om te testen.
$tijd2 = strtotime('+1 day', $tijd);

//Tijden door elkaar delen
$temp = $tijd1-$tijd2;

//String van vandaag uitelkaar halen
$dag1    =    strftime ("%d", $tijd1);
$maand1    =    strftime ("%m", $tijd1);
$jaar1    =    strftime ("%Y", $tijd1);

//String van de tijd van morgen uitelkaar halen.
$dag2    =    strftime ("%d", $tijd2);
$maand2    =    strftime ("%m", $tijd2);
$jaar2    =    strftime ("%Y", $tijd2);

//Kijken als de dagen verschillen
if($dag1    <>    $dag2)
{

$temp1    =    strftime ("%d", $temp);
$temp4    =    strtotime($temp1);
}


//Kijken als de maanden verschillen
if($maand1    <>    $maand2)
{

$temp2    =    strftime ("%m", $temp);
$temp5    =    strtotime($temp2);
}


//kijken als de jaren verschillen
if($jaar1    <>    $jaar2)
{

$temp3    =    strftime ("%Y", $temp);
$temp6    =    strtotime($temp3);
}


$result1     =    strftime($temp6);
$result2     =    strftime($temp5);
$result3     =    strftime($temp4);

//De resulaten weergeven.
echo $result1.'-'.$result2.'-'.$result3;

?>


de uitkomst is:
1134155100-1134126000-1134108000

:S
 
Knorfski

Knorfski

09/12/2005 20:55:00
Quote Anchor link
Hallo Jan,

Ik had je tutorial ook al gezien!
Zeer netjes.

Misschien moet ik dit maar vergeten en daarmee aan de slag :P
 
Jan Koehoorn

Jan Koehoorn

09/12/2005 20:57:00
Quote Anchor link
Net wat je wilt hoor. PHP kan ook rekenen met datum en tijd. Maar MySQL kan het beter, vind ik.
 
Knorfski

Knorfski

09/12/2005 20:59:00
Quote Anchor link
Wat is makkelijker ?

Het is opzich maar een heel simpel stukje script.
 

Pagina: 1 2 volgende »



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.