/ Forside/ Teknologi / Udvikling / PHP / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Antal år og dage fra en bestemt dato til~
Fra : kaasgaard
Vist : 677 gange
200 point
Dato : 05-10-02 02:17

Hep,

Jeg skal bruge differencen fra en bestemt dato (28/4-1999) til nu i dage og år.

Jeg har siddet og leget lidt med mktime(0,0,0,4,28,1999) og time() og prøvet at formattere differencen med date(). Jeg kan bare ikke få det til at virke.

Hvordan gør jeg? Det behøver ikke nødvendigvis at være med ovennævnte funktioner, det skal bare være i php og det skal ofc virke :)

Takker.

// Martin

 
 
Kommentar
Fra : strarup


Dato : 05-10-02 08:57

Hej Martin,

så vidt jeg husker eksistere der et javascript der ka' gøre det... f.eks. dette "Dynamic Countup Script"... -->
http://www.dynamicdrive.com/dynamicindex6/countingup.htm
men om det ka' implementeres i PHP ved jeg ikke...

men umiddelbart sku' det være muligt... "How do I insert javascript in php code?"... -->
http://www.alt-php-faq.org/local/33/
jeg kender desvære ikke så meget til PHP endnu...

mvh.

Strarup

Kommentar
Fra : Nyhedsbruger


Dato : 05-10-02 12:31

kaasgaard wrote:
> Jeg skal bruge differencen fra en bestemt dato (28/4-1999) til nu i dage
> og år.
>
> Jeg har siddet og leget lidt med mktime(0,0,0,4,28,1999) og time() og
> prøvet at formattere differencen med date(). Jeg kan bare ikke få det
> til at virke.

Differensen mellem de to timestamps, er jo ikke et antal sek. siden epoch.
For at få forskellen i eks. dage el. timer eller hvad du måtte ønske, skal
du jo bare gange differens med passende omregningsfaktorer - eks. 1/60
min/sek eller 1/(60*60*24) dag/sek.

--
mvh Jakob Kirkegaard
http://jakir.dk

Kommentar
Fra : Nyhedsbruger


Dato : 05-10-02 12:55


"kaasgaard" <kaasgaard.news@kandu.dk> skrev

> Jeg skal bruge differencen fra en bestemt dato (28/4-1999) til nu i dage
> og år.
>
> Jeg har siddet og leget lidt med mktime(0,0,0,4,28,1999) og time() og
> prøvet at formattere differencen med date(). Jeg kan bare ikke få det
> til at virke.
>
> Hvordan gør jeg? Det behøver ikke nødvendigvis at være med ovennævnte
> funktioner, det skal bare være i php og det skal ofc virke :)

du kan evt. lave din egen funktion?

function dirrefence($date1, $date2) {
$d1 = split("-", $date1);
$year = $d1[0];
$month = $d1[1];
$day1 = $d1[2];
// sammen med date2

// sammenlign, træk fra læg til osv...
}

--
Take Care
Kim Emax - Freelance programmør - Pt. Job og opgavesøgende.
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop




Accepteret svar
Fra : Nyhedsbruger

Modtaget 200 point
Dato : 06-10-02 21:00

kaasgaard wrote:

> Jeg har siddet og leget lidt med mktime(0,0,0,4,28,1999) og time() og
> prøvet at formattere differencen med date(). Jeg kan bare ikke få det
> til at virke.

Følgende er ikke 100% korrekt, men kommer tæt på (der er ikke taget helt
højde for skudår og dage samt tidspunktet på dagen).

# Tag tidsstemplerne fra de to dage (tidspunkter) og træk dem fra hinanden.
$timespansec = time() - mktime (0,0,0,$month,$day,$year);

# Dividér med 86400 så du får det i antal dage.
$timespandays = round($timespansec/86400);

# Dividér med 365,25 så får du antallet i hele år.
$timespanyears = round ($timespandays/365.25);

# Resten (modulus) er så antallet af dage. Modulus kan kun beregnes
# af heltal, hvorfor vi lige ganger med fire på begge sider.
$timespandays = (4 * $timespandays) % (4 * 365.25);

echo "Det er ".$timespanyears." år og ".$timespandays."dage siden.";

De herligste hilsner
--
| Claus Sørensen | Jeg vil leve i en verden, hvor al kommunikation
|--------------------| er baseret på frie og åbne standarder, så enhver
| cs@chbs.dk | har friheden til at vælge.
| http://www.chbs.dk | Claus Sørensen, 2001

Kommentar
Fra : Nyhedsbruger


Dato : 06-10-02 21:13

Claus Sørensen wrote:

> Følgende er ikke 100% korrekt, men kommer tæt på (der er ikke taget helt
> højde for skudår og dage samt tidspunktet på dagen).
>
> # Tag tidsstemplerne fra de to dage (tidspunkter) og træk dem fra
> # hinanden.
> $timespansec = time() - mktime (0,0,0,$month,$day,$year);
>
> # Dividér med 86400 så du får det i antal dage.
> $timespandays = round($timespansec/86400);

Ikke round men (int), så man kun får heltalsværdien:

$timespandays = (int)($timespansec/86400);

> # Dividér med 365,25 så får du antallet i hele år.
> $timespanyears = round ($timespandays/365.25);

Ligeledes (int) her:

$timespanyears = (int) ($timespandays/365.25);

> # Resten (modulus) er så antallet af dage. Modulus kan kun beregnes
> # af heltal, hvorfor vi lige ganger med fire på begge sider.
> $timespandays = (4 * $timespandays) % (4 * 365.25);

Resultatet skal divideres med 4, da det bliver fire gang så stort:

$timespandays = ((4 * $timespandays) % (4 * 365.25))/4;

> echo "Det er ".$timespanyears." år og ".$timespandays."dage siden.";

De herligste hilsner
--
| Claus Sørensen | Jeg vil leve i en verden, hvor al kommunikation
|--------------------| er baseret på frie og åbne standarder, så enhver
| cs@chbs.dk | har friheden til at vælge.
| http://www.chbs.dk | Claus Sørensen, 2001

Godkendelse af svar
Fra : kaasgaard


Dato : 07-10-02 00:43

Tak for svaret Claus. Kombineret med hvad jeg havde fundet frem til ramte det lige i øjet.

Tak til alle jer andre også. Det er sgu rart med lidt input ;)

// Martin
                        

Kommentar
Fra : strarup


Dato : 07-10-02 01:42

Hej Martin,

hvis det sku' drille lidt er der lidt omkring mktime funktionen her... -->
http://io.spaceports.com/~wysardry/php/manual/function.mktime.html

det er fra en PHP Manual...
http://io.spaceports.com/~wysardry/php/manual/index.html
Kap VI. Calendar functions... -->
http://io.spaceports.com/~wysardry/php/manual/ref.calendar.html
Kap XVIII. Date and Time functions... -->
http://io.spaceports.com/~wysardry/php/manual/ref.datetime.html

ang. Skudår fandt jeg en kommentar på denne side der nævnte noget om hvordan det evt. ka' gøres...
http://www.php.net/manual/en/function.date.php
nede ved kommentaren... -->
-----------------------------------------
patriko2k at yahoo dot com
14-Aug-2002 10:31
-----------------------------------------
hvor Leap year bliver nævnt... (leap year = skudår)...

med ellers så vidt jeg ka' forstå på det... (kender ikke så meget til PHP endnu... er mere til ASP)... så sku' det også være muligt at bruge funktionen date("t") som der bliver skrevet i starten af kommentaren, som er blevet tilføjet fra "editoren"...
(t - number of days in the given month; i.e. "28" to "31")
der er også date("L")... -->
(L - boolean for whether it is a leap year; i.e. "0" or "1" )

"Using the PHP mktime Function"... -->
http://www.linuxguruz.org/z.php?id=306

eller denne kalender der har følgende... -->
http://www.pscode.com/xq/ASP/txtCodeId.752/lngWid.8/qx/vb/scripts/ShowCode.htm
------------------------------------------------------------------------
/* Grab the first day of the month, and total days */
$first_day = date("w", mktime(0, 0, 0, $this_month, 1, $this_year));
$total_days = date("t", mktime(0, 0, 0, $this_month, 1, $this_year));
------------------------------------------------------------------------

jeg blev lidt nysgerrig da jeg ikke kender så meget til PHP... men jeg ved ikke om noget af det overstående evt. ku' hjælpe dig med dit projekt, idet jeg er en PHPnewbie...

men umiddelbart ser det ud til at det også er muligt at få skudår puttet ind i PHP... men er det meningen at det ska' være en fast dato og tidspunkt den ska' kalkulere udfra, eller en variende?

mvh.

Strarup

Kommentar
Fra : Nyhedsbruger


Dato : 12-10-02 20:05


"Claus Sørensen" <cs@chbs.dk> skrev i en meddelelse
news:anq672$tha$1@news.net.uni-c.dk...
> Claus Sørensen wrote:

en hel masse vildt ...

....
> > # Tag tidsstemplerne fra de to dage (tidspunkter) og træk dem fra
> > # hinanden.
> > $timespansec = time() - mktime (0,0,0,$month,$day,$year);
> >
> > # Dividér med 86400 så du får det i antal dage.
> > $timespandays = round($timespansec/86400);

SNIP

Hold da op du er vild !!

> De herligste hilsner
> --
> | Claus Sørensen | Jeg vil leve i en verden, hvor al kommunikation

--
Regards, yours truly madly

(-: KGB
http://goshin-jitsu.dk
CALM UNDER PRESSURE



Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste