Avatar billede andersj Nybegynder
25. september 2003 - 00:42 Der er 8 kommentarer og
1 løsning

Dage fra dato!

Hej er der nogen der kan hjælpe mig med den her...

Jeg har denne dato : 1065041200 "01-10-2003"
Fra den dato vil jeg gerne vide hvor mange dage der er fra i dag time()

Jeg har prøvet med :

$date1 = 1065041200;
$date2 = time();

if ($date1 > $date2)
{
    echo date("d",$date1-$date2);
}

Reslutat : 07

men hvis jeg prøver med : 1065045035 "01-10-2003", samme dato, så får jeg 08.......
men jeg syntes ikke det stemmer helt overens....
Avatar billede detox Nybegynder
25. september 2003 - 01:04 #1
Dette er nok mere præcist:

$date1 = 1065041200;
$date2 = time();
if ($date1 > $date2)
{
    echo floor(($date1-$date2)/(60*60*24));
}

Hvilket giver det korrekte resultat: 6
Avatar billede detox Nybegynder
25. september 2003 - 01:10 #2
Ellers evt. sådan her:

$date1 = 1065041200;
$date2 = time();
if ($date1 > $date2)
{
    echo (date('z',$date1)-date('z',$date2));
}
Avatar billede andersj Nybegynder
25. september 2003 - 09:57 #3
tak detox, jeg tog den første..... du må lige lave et svar så jeg kan gi dig points....
Avatar billede detox Nybegynder
25. september 2003 - 10:21 #4
Velbekommen. Bare vær obs på, at den første er afhængig af tidspunktet på de to datoer, da den går ud fra antal 24-timer. Den anden derimod bygger på selve dagen i året og det kan jo drille ved årsskifte.
Avatar billede detox Nybegynder
25. september 2003 - 10:50 #5
En anden ting; hvis du fx bruger beregningen til et udtræk fra en database, vil jeg lige henlede opmærksomheden på mysql's suveræne 'date and time' funktioner. I det tilfælde at du fx har gemt tiden som timestamp i tabellen, kan du bruge noget i den her stil:

SELECT * FROM tabel WHERE TO_DAYS(NOW()) >= TO_DAYS(FROM_UNIXTIME(dit_timestamp))
Avatar billede andersj Nybegynder
25. september 2003 - 11:19 #6
jo tak, btw hvordan får jeg tid med i den der dage tæller???

$date1 = 1065041200;
$date2 = time();
if ($date1 > $date2)
{
    echo floor(($date1-$date2)/(60*60*24));
}

1065041200  : 01-10-2003 21:35:00

reslutat : 6 dage og 24 min tilbage??
Avatar billede detox Nybegynder
25. september 2003 - 11:36 #7
Fx:

$date1 = 1065041200;
$date2 = time();
if ($date1 > $date2)
{
    $diff = $date1-$date2;
    $dage = $diff/(60*60*24)%7;
    $timer = $diff/3600%24;
    $minutter = $diff/60%60;
    echo "$dage dage - $timer timer - $minutter minutter";
}
Avatar billede velle Nybegynder
25. september 2003 - 12:00 #8
<?PHP
function dagetiloktober()
{
    $okt = mktime('','','',10,1,2003);
    $then = mktime();
    return ceil(($then-$now) / (60*60*24));
}
echo dagetiloktober();
?>

Unix Timestamp er en måde at angive et tidspunkt (dato,klokkeslet), det er defineret som antal sekunder tidspunktet ligger fra midnat 1. jan 1970.

Funktionen mktime returnerer her timestamp for 1. oktober 2003, og på linien efter (når  funktionen kaldes uden argumenter) det timestamp hvor PHP eksekverer koden, dvs. nu! Differencen mellem $now og $then er altså antal sekunder frem til midnat (om morgenen) d. 1. oktober. Når denne difference divideres med antal sekunder pr døgn fås altså det antal døgn, der er til midnat 1. okt.

Dvs. eksempelvis 30. sept. kl. 14:00, vil der være ca. 0,42 døgn til 1. okt! Det svar som ville give mest mening ville dog være 1, derfor skal der rundes op, hvilket gøres med funktionen ceil().

Hvis du vælger at bruge floor() bliver der rundet ned, hvis man følger den tankegang, så er der altså i øjeblikket 0 dage til i morgen, hvilket ikke er den måde vi plejer at se på det.

VH Velle
Avatar billede velle Nybegynder
25. september 2003 - 12:56 #9
Jeg burde vist have opdateret tråden inden mit jeg postede mit svar fra før. Nå, men jeg har lige lidt til dit efterfølgende spørgsmål.

<br>
<?PHP
$now = time();
$then = mktime(22,35,00,10,1,2003); //tt,hh,ss,dd,mm,yyyy
$dif = $then - $now; //antal sekunder frem til 1. okt. 2003 kl 22:35

$difarray = getdate($dif);
$days = $difarray["yday"];
$hours = $difarray["hours"];
$minutes = $difarray["minutes"];
$seconds = $difarray["seconds"];

echo "Der er $days dage, $hours timer, $minutes minutter og $seconds sekunder til AndersJ skal et eller andet vildt :-)";

?>

VH Velle
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