Avatar billede jesperkm Nybegynder
19. juni 2005 - 16:04 Der er 8 kommentarer

Finde dage og timer!

Hejsa, i mit udtæk fra databasen får jeg fx:
18-06-2005
ved "første login" og 19-06-2005 ved "sidste login"

hvordan finder jeg ud af hvor mange timer og dage der er imellem 18-06-2005 -> 19-06-2005 ?
Avatar billede barklund Nybegynder
19. juni 2005 - 16:19 #1
Du kan gøre det rent i sql:

SELECT TO_DAYS(sidste_login) - TO_DAYS(første_login) AS antal_dage_oprettet FROM users

:)

--
Morten Barklund
Avatar billede jesperkm Nybegynder
19. juni 2005 - 16:21 #2
ikke i et udtræt.. vil have det som en if sætning ;) eller regnstykket
Avatar billede jesperkm Nybegynder
19. juni 2005 - 16:23 #3
udtræk *
Avatar billede gertnissen Nybegynder
19. juni 2005 - 16:52 #4
Prøv at se her http://dk2.php.net/manual/da/ref.datetime.php lidt nede hvor der er et forslag til en datedif function af daniel at globalnetstudios dot com.

  function dateDiff($dt1, $dt2, $split='yw') {
  $date1 = (strtotime($dt1) != -1) ? strtotime($dt1) : $dt1;
  $date2 = (strtotime($dt2) != -1) ? strtotime($dt2) : $dt2;
  $dtDiff = $date1 - $date2;
  $totalDays = intval($dtDiff/(24*60*60));
  $totalSecs = $dtDiff-($totalDays*24*60*60);
  $dif['h'] = $h = intval($totalSecs/(60*60));
  $dif['m'] = $m = intval(($totalSecs-($h*60*60))/60);
  $dif['s'] = $totalSecs-($h*60*60)-($m*60);
  // set up array as necessary
  switch($split) {
  case 'yw': # split years-weeks-days
    $dif['y'] = $y = intval($totalDays/365);
    $dif['w'] = $w = intval(($totalDays-($y*365))/7);
    $dif['d'] = $totalDays-($y*365)-($w*7);
    break;
  case 'y': # split years-days
    $dif['y'] = $y = intval($totalDays/365);
    $dif['d'] = $totalDays-($y*365);
    break;
  case 'w': # split weeks-days
    $dif['w'] = $w = intval($totalDays/7);
    $dif['d'] = $totalDays-($w*7);
    break;
  case 'd': # don't split -- total days
    $dif['d'] = $totalDays;
    break;
  default:
    die("Error in dateDiff(). Unrecognized \$split parameter. Valid values are 'yw', 'y', 'w', 'd'. Default is 'yw'.");
  }
  return $dif;
  }
Avatar billede jesperkm Nybegynder
19. juni 2005 - 17:05 #5
gen - så må du gerne lave det til at finde dagene mellem 18-06-2005 -> 19-06-2005 ..
er dårlig til php
Avatar billede gertnissen Nybegynder
19. juni 2005 - 22:01 #6
<?php

function dateDiff($dt1, $dt2, $split='w') {
  $date1 = (strtotime($dt1) != -1) ? strtotime($dt1) : $dt1;
  $date2 = (strtotime($dt2) != -1) ? strtotime($dt2) : $dt2;
  $dtDiff = $date1 - $date2;
  $totalDays = intval($dtDiff/(24*60*60));
  $totalSecs = $dtDiff-($totalDays*24*60*60);
  $dif['h'] = $h = intval($totalSecs/(60*60));
  $dif['m'] = $m = intval(($totalSecs-($h*60*60))/60);
  $dif['s'] = $totalSecs-($h*60*60)-($m*60);
  // set up array as necessary
  switch($split) {
  case 'yw': # split years-weeks-days
    $dif['y'] = $y = intval($totalDays/365);
    $dif['w'] = $w = intval(($totalDays-($y*365))/7);
    $dif['d'] = $totalDays-($y*365)-($w*7);
    break;
  case 'y': # split years-days
    $dif['y'] = $y = intval($totalDays/365);
    $dif['d'] = $totalDays-($y*365);
    break;
  case 'w': # split weeks-days
    $dif['w'] = $w = intval($totalDays/7);
    $dif['d'] = $totalDays-($w*7);
    break;
  case 'd': # don't split -- total days
    $dif['d'] = $totalDays;
    break;
  default:
    die("Error in dateDiff(). Unrecognized \$split parameter. Valid values are 'yw', 'y', 'w', 'd'. Default is 'yw'.");
  }
  return $dif;
}

$d= dateDiff('18-06-2005','19-06-2005');
echo abs($d['d']);

?>

da $date1 < $date2 --> negative integers are returned, altså -1 - abs funktionen ændre resultatet til 1
Avatar billede jesperkm Nybegynder
20. juni 2005 - 00:25 #7
Hvorfor gider den ikke?

<?php

function dateDiff($dt1, $dt2, $split='w') {
  $date1 = (strtotime($dt1) != -1) ? strtotime($dt1) : $dt1;
  $date2 = (strtotime($dt2) != -1) ? strtotime($dt2) : $dt2;
  $dtDiff = $date1 - $date2;
  $totalDays = intval($dtDiff/(24*60*60));
  $totalSecs = $dtDiff-($totalDays*24*60*60);
  $dif['h'] = $h = intval($totalSecs/(60*60));
  $dif['m'] = $m = intval(($totalSecs-($h*60*60))/60);
  $dif['s'] = $totalSecs-($h*60*60)-($m*60);
  // set up array as necessary
  switch($split) {
  case 'yw': # split years-weeks-days
    $dif['y'] = $y = intval($totalDays/365);
    $dif['w'] = $w = intval(($totalDays-($y*365))/7);
    $dif['d'] = $totalDays-($y*365)-($w*7);
    break;
  case 'y': # split years-days
    $dif['y'] = $y = intval($totalDays/365);
    $dif['d'] = $totalDays-($y*365);
    break;
  case 'w': # split weeks-days
    $dif['w'] = $w = intval($totalDays/7);
    $dif['d'] = $totalDays-($w*7);
    break;
  case 'd': # don't split -- total days
    $dif['d'] = $totalDays;
    break;
  default:
    die("Error in dateDiff(). Unrecognized \$split parameter. Valid values are 'yw', 'y', 'w', 'd'. Default is 'yw'.");
  }
  return $dif;
}

$d= dateDiff('$_GET[o]','$_GET[s]');
echo abs($d['d']);

?>

også på siden side.php?o=23-04-2005&s=24-04-2005 ?????!?!
Avatar billede gertnissen Nybegynder
20. juni 2005 - 23:09 #8
skal det ikke være

$d= dateDiff($_GET['o'],$_GET['s']);
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester