Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Porównanie dat i obliczenie pozostałego czasu
Forum PHP.pl > Forum > PHP
webJ@cob
Witam,

Mam następujący problem. Może ktoś będzie w stanie mi pomoc.

W bazie MySQL w atrybucie tabeli DATETIME mam zapisaną wartość.

Zależy mi aby system obliczył ile pozostało czasu do czasu, który wynosi: data z bazy + 2 dni.
Następujący algorytm działa ale w przypadku przypisania na stałe, a gdy wyciągam automatycznie to dostaje wartości rzędu -1321.1919444444 itp.

Algorytm:

function dateDiff ($dt1, $timeZone = 'GMT')
{
// $dt1 tutaj wartosc z bazy w formacie Y-m-d H:i:s
$dt2 = date("Y-m-d H:i:s"); // czas teraz

$tZone = new DateTimeZone($timeZone);

$dt1 = new DateTime($dt1, $tZone);
$dt2 = new DateTime(date("Y-m-d H:i:s"), $tZone);

$ts1 = $dt1->format('Y-m-d H:i:s');
$ts2 = $dt2->format('Y-m-d H:i:s');

$diff = strtotime($ts1."+96 hours")-strtotime($ts2);

$diff/= 3600; // wynik zwracany z godzinach

return $diff;
}
decha-design
Spróbuj tego ...
  1. <?php
  2. $day = 29;
  3. $month = 8;
  4. $year = 2008;
  5. $seconds = 0;
  6. $minutes = 0;
  7. $hours = 0;
  8.  
  9. function getTimeDiff($hours, $minutes, $seconds, $month, $day, $year) {
  10.  
  11.  $date = mktime($hours, $minutes, $seconds, $month, $day, $year);
  12.  $today = mktime();
  13.  
  14.  $remain = $date - $today;
  15.  
  16.  $d = floor($remain / (24 * 60 * 60)); // dni
  17.  
  18.  $remain_sec = mktime(23, 59, 59);
  19.  
  20.  $diff = $remain_sec - $today;
  21.  
  22.  $h = floor($diff / (60*60)); // godziny
  23.  
  24.  $date_today = date('H:i:s');
  25.  
  26.  $array = explode(':', $date_today);
  27.  
  28.  $m = 60 - $array[1]; // minuty
  29.  
  30.  $s = 60 - $array[2]; // sekundy
  31.  
  32.  echo 'Do '.$day.'.'.$month.'.'.$year.' r. pozostało: '.$d.' dni, '.$h.' godzin '.$m.' minut '.$s.' sekund.';
  33.  
  34. }
  35.  
  36. getTimeDiff($hours, $minutes, $seconds, $month, $day, $year);
  37. ?>


Dostosuj do własnych potrzeb ... rozbij date na kawalki ... explode();
tiraeth
  1. <?php
  2. $iStart = time();
  3. $iEnd = strtotime($aRow['column_with_datetime']);
  4.  
  5. $iLast = $iEnd-$iStart;
  6. $iLast = ( $iLast < 0 ) ? 0 : $iLast;
  7.  
  8. echo 'Seconds to the magic date: '.$iLast;
  9. ?>


Jak masz sekundy, to sobie spokojnie możesz zamienić na dni, godziny, minuty i ... sekundy smile.gif

http://snipplr.com/view/2711/translate-amo...inutes-seconds/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.