/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
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 n~
Fra : kaasgaard


Dato : 05-10-02 01: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

--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


 
 
Jakob Kirkegaard (05-10-2002)
Kommentar
Fra : Jakob Kirkegaard


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

Kim Emax - ayianapa.~ (05-10-2002)
Kommentar
Fra : Kim Emax - ayianapa.~


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




Claus Sørensen (06-10-2002)
Kommentar
Fra : Claus Sørensen


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

Claus Sørensen (06-10-2002)
Kommentar
Fra : Claus Sørensen


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

KGB (12-10-2002)
Kommentar
Fra : KGB


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



kaasgaard (08-10-2002)
Kommentar
Fra : kaasgaard


Dato : 08-10-02 19:36

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
                        

--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste