[php] Functie tijdsverschil

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hieronder een functie om het verschil tussen twee data+tijd uit te rekenen:

PHP:
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
<?php
function difftime($oldtime, $newtime)
{
    $dtdatumtijd = explode(" ", $oldtime, 2);
    $dtdatum = explode("-", $dtdatumtijd[0], 3);
    $dttijd = explode(":", $dtdatumtijd[1], 3);
    $old = mktime($dttijd[0], $dttijd[1], $dttijd[2], $dtdatum[1], $dtdatum[2], $dtdatum[0]);

    $dtdatumtijd = explode(" ", $newtime, 2);
    $dtdatum = explode("-", $dtdatumtijd[0], 3);
    $dttijd = explode(":", $dtdatumtijd[1], 3);
    $new =  mktime($dttijd[0], $dttijd[1], $dttijd[2], $dtdatum[1], $dtdatum[2], $dtdatum[0]);

    $verschil = abs($new - $old);
    $verschil = date("Y m d H i s", $verschil);

    $temp = explode(" ", $verschil, 6);
    $temp[0] = $temp[0] - 1970;
    $temp[1]--;
    $temp[2]--;
    $temp[3]--;
    $verschil = "$temp[0]-$temp[1]-$temp[2] $temp[3]:$temp[4]:$temp[5]";
//return $verschil;
return $temp[2];
//return $temp[3];
    }
$today = date("Y-m-d H:i:s");
$Y = $_POST['jaar_r']; // gepost via een form
$m = $_POST['maand_r'];  // gepost via een form
$d = $_POST['dag_r'];  // gepost via een form
$H = $_POST['uur_r'];  // gepost via een form
$i = $_POST['minuut_r'];  // gepost via een form
$s = 00;
$tijd_r = "$Y-$m-$d $H:$i:$s";
echo difftime("$today", "$tijd_r");
?>


De php code die volgt is deze:
PHP:
1
2
3
4
5
6
7
<?
    if ($temp[2] < 1)
    {
        $fout['tijdverschil'] = true;
        echo "tijdsverschil te klein!!";
    }
?>


Het probleem is nu dat er altijd "tijdsverschil te klein" komt te staan.
Waarschijnlijk omdat de variabele niet goed wordt verstuurd, hij is volgens mij alleen in de functie geldig?
Volgens mij een klein 'schoonheids'foutje ... kan iemand mij helpen, ik zie door de bomen even het bos niet meer in de verhitte kamer.

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 12:52
:?
Geef eens wat meer uitleg, want ik snap het niet zo goed. Lees trouwens ook eens de p&w quickstart.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • twiekert
  • Registratie: Februari 2001
  • Laatst online: 30-08 11:55
$temp is alleen in de functie te gebruiken. aangezien je em returned kan je ook dit doen:

PHP:
1
2
3
4
5
6
7
<? 
    if (difftime("$today", "$tijd_r") < 1) 
    { 
        $fout['tijdverschil'] = true; 
        echo "tijdsverschil te klein!!"; 
    } 
?> 



/edit

ik snap geen hout van je functie :P
WAT wil je precies doen? het verschil in dagen uitrekenen? verschil in seconden ?

[ Voor 30% gewijzigd door twiekert op 13-08-2003 15:17 ]


Acties:
  • 0 Henk 'm!

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 08:29

Tjark

DON'T PANIC

Je wil blijkbaar dat iets niet mag gebeuren als het tijdsverschil kleiner dan 1 dag is?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php 
function difftime($oldtime, $newtime) 
{ 
    $dtdatumtijd = explode(" ", $oldtime, 2); 
    $dtdatum = explode("-", $dtdatumtijd[0], 3); 
    $dttijd = explode(":", $dtdatumtijd[1], 3); 
    $old = mktime($dttijd[0], $dttijd[1], $dttijd[2], $dtdatum[1], $dtdatum[2], $dtdatum[0]); 

    $dtdatumtijd = explode(" ", $newtime, 2); 
    $dtdatum = explode("-", $dtdatumtijd[0], 3); 
    $dttijd = explode(":", $dtdatumtijd[1], 3); 
    $new =  mktime($dttijd[0], $dttijd[1], $dttijd[2], $dtdatum[1], $dtdatum[2], $dtdatum[0]); 

    return(abs($new - $old)%(60*60*24));
}

untested

[ Voor 7% gewijzigd door Tjark op 13-08-2003 15:19 ]

*insert signature here


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt twiekert ... hij doet het nu perfect. Eigenlijk is jouw oplossing best heel erg logisch :P
Maar doordat hij gereturnt wordt, wordt hij weergegeven, dit is echter weer niet de bedoeling :/ Iemand nog een tip?

[ Voor 38% gewijzigd door Verwijderd op 13-08-2003 15:22 ]


Acties:
  • 0 Henk 'm!

  • twiekert
  • Registratie: Februari 2001
  • Laatst online: 30-08 11:55
weergegeven? het enigste wat je weergeeft aan tijdsverschil is dit:

PHP:
1
echo difftime("$today", "$tijd_r");


kan je gewoon weghalen ?

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12:56
Er zijn toch hartstikke veel date en time functions in PHP zelf. Kun je daarmee niet bereiken wat je wilt?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
twiekert je bent weer goud :)
En djluc die tijdfunctie is het probleem niet, die werkt gewoon. Het probleem was dat ik met de uitkomst niet veel kon, maar dat is nu gelukkig opgelost :)
Pagina: 1