/ 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
Dato...
Fra : Frank


Dato : 11-12-08 07:13

Jeg skal beregne en 'expire date', men har et problem og mister
10 år. Det er sgu ikke så godt!!

Her er koden:

$Dateusec = gettimeofday();
$unixtime = $Dateusec["sec"];

echo "<br><br>Start time: ", $unixtime;            
$start = strftime("%y.%m.%d", $unixtime);
echo "<br>Start time as string: ", $start;

$s1 = mktime(
   date("H", $unixtime),
   date("i", $unixtime),
   date("s", $unixtime),
   date("m", $unixtime),
   date("d", $unixtime),
   date("Y", $unixtime) + 10   // adding 10 years
   );
echo "<br><br>Stop time: ", $s1;

$s2 = strftime("%y.%m.%d", $s1);   
echo "<br>Stop time as string: ", $s2;

$s3 = strtotime($s2);
echo "<br><br>Stop time: ", $s3;

$s4 = strftime("%y.%m.%d", $s3);
echo "<br>Hvad skete der: ", $s4;


Her er resultatet:

Start time: 1228974926
Start time as string: 08.12.11

Stop time: 1544507726
Stop time as string: 18.12.11

Stop time: 1229015531
Hvad skete der: 08.12.11
   
Jeg synes det er mystisk!! Er der nogen der ka hjælpe?

Tak!
   
   

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Carsten (11-12-2008)
Kommentar
Fra : Carsten


Dato : 11-12-08 07:48

"Frank" <frank@neergaard.dk> skrev i en meddelelse
news:4940af69$0$90273$14726298@news.sunsite.dk...
> Stop time: 1544507726
> Stop time as string: 18.12.11
>
> Stop time: 1229015531
> Hvad skete der: 08.12.11
>
> Jeg synes det er mystisk!! Er der nogen der ka hjælpe?

strtotime har betemte regler for hvad den kan klare at konvertere til en
dato. Hvis den ikke lige kan tyde det du skriver så får du dags dato tilbage
og det er det der sker for dig. Kig lidt på php.net omkring strtotime - jeg
mener at den som standard (i DK vel) vil have dd-mm-yyyy

Carsten



Jonathan Stein (11-12-2008)
Kommentar
Fra : Jonathan Stein


Dato : 11-12-08 12:13

Frank skrev:

> Jeg synes det er mystisk!! Er der nogen der ka hjælpe?

Når du nu alligevel bruger strtotime, så læg mærke til hvor meget, den
egentlig kan:
$om10aar = strtotime('+10 year');
echo('Om 10 år det: '.date('Y-m-d', $om10aar));

M.v.h.

Jonathan

--
Er din email vigtig? Er du træt af, at din hjemmeside er nede?
Stabilt webhotel på redundant setup med daglig backup.
POP3, IMAP, PHP, JSP, Java, Perl, Python, Telnet, SSH, Cron-jobs m.v.
http://www.jsp-hotel.dk/

Frank (11-12-2008)
Kommentar
Fra : Frank


Dato : 11-12-08 14:44

Jeg har rettet mit eksempel fra tidligere, så det er lidt lettere
at se hvad der går galt! Nu er det sådan her:

Spørgsmålet er hvorfor linie 4 og 6 nedenfor ikke er ens?????

$Dateusec = gettimeofday();
$unixtime = $Dateusec["sec"];
   
$s0 = strftime("%y.%m.%d", $unixtime);
$s1 = strtotime("+10 year"); // Tak til Jonathan(-:
$s2 = strftime("%y.%m.%d", $s1);   
$s3 = strtotime($s2);
$s4 = strftime("%y.%m.%d", $s3);
   
echo "<br><br>1. Start time: ", $unixtime;
echo "<br>2. Start time as string: ", $s0;   
echo "<br><br>3. Stop time: ", $s1;
echo "<br>4. Stop time as string: ", $s2;
echo "<br><br>5. Stop time: ", $s3;
echo "<br>6. Hvad sker med de 10 år: ", $s4;

Koden resulterer i dette her:

1. Start time: 1229002227
2. Start time as string: 08.12.11

3. Stop time: 1544535027
4. Stop time as string: 18.12.11

5. Stop time: 1229015531
6. Hvad skete der med de 10 år: 08.12.11

Spørgsmålet er altså hvorfor linie 4 og 6 (eller 3 og 5) ikke er
ens?????

Er det mig der er blind???

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Dan Storm (11-12-2008)
Kommentar
Fra : Dan Storm


Dato : 11-12-08 15:26

Frank skrev:
> Spørgsmålet er altså hvorfor linie 4 og 6 (eller 3 og 5) ikke er
> ens?????

Fordi du ikke har læst manualen.
Datoer angives med dashes, slashes, mellemrum eller ingenting.
F.eks.:
2008-12-11
11/12/08
11dec08
11 dec 08

Tidspunkter angives med kolon, punktu eller ingenting
F.eks.:
18:00:00
180000
18.00.00

Så når du tygger 18.12.11 igennem strtotime() får du dagen i dag,
klokken 18:12:11, men du udskriver stadig årstallet og dagen for idag.

Derfor tror du at du bliver snydt for ti år.





--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Johan Holst Nielsen (11-12-2008)
Kommentar
Fra : Johan Holst Nielsen


Dato : 11-12-08 15:30

Frank wrote:
> Spørgsmålet er hvorfor linie 4 og 6 nedenfor ikke er ens?????

Fordi du bruger et forkert tidsformat!

> $Dateusec = gettimeofday();
> $unixtime = $Dateusec["sec"];

hvorfor ikke blot

$unixtime = time();

Ingen grund til gettimeofday() osv...

> $s0 = strftime("%y.%m.%d", $unixtime);
> $s1 = strtotime("+10 year"); // Tak til Jonathan(-:
> $s2 = strftime("%y.%m.%d", $s1);   
> $s3 = strtotime($s2);
^^^^^
Der går den galt - 18.12.11 opfattes ikke som et gyldigt format!

Læs mere her:
<http://www.gnu.org/software/shishi/manual/html_node/Date-input-formats.html>

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Frank (12-12-2008)
Kommentar
Fra : Frank


Dato : 12-12-08 14:48

Tak for hjælpen begge to!

Nu sidder den lige i øjet!!!

Frank

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

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

Månedens bedste
Årets bedste
Sidste års bedste