PDA

Bekijk Volledige Versie : [PHP] datum en tijd



Rob Urlings
03/04/03, 13:05
hallo nieuwsgroep,

Ik ben momenteel bezig om een weblog te maken voor twee studenten die een
half jaar naar Australië gaan. Hiervoor heb ik in MySQL de volgende tabel
gemaakt om hun berichtjes in op te slaan:

$sql = "CREATE TABLE dagboek ( " .
"nr INT NOT NULL AUTO_INCREMENT PRIMARY KEY, " .
"naam varchar(250), " .
"onderwerp varchar(250), " .
"datumaus datetime, " .
"datumned datetime, " .
"bericht TEXT " .
")";

Het probleem is nu eigenlijk om de juiste tijden op te slaan in het database
wanneer een berichtje is ingevoerd. Omdat de server zich fysiek in Nederland
bevindt, maak ik gebruik van de volgende regel in php om de waarde van het
attribuut datumned te bepalen:

$datetimened = date("Y-m-d-H:i:s");

Echter tegelijkertijd zou ik ook graag de datum en tijd van Brisbane in
Australië willen opslaan. Hiervoor heb ik al uitgerekend dat Brisbane 10uur
eerder is en het volgende stukje code in php geprogrammeerd:

$datetimeaus =
mktime(date("Y")-date("m")-date("d")-date("H")+10:date("i"):date("s"));

Dit genereerd echter de waarde '-1'. Kan iemand mij vertellen wat ik
verkeerd doe en hoe ik wel de juiste datum en tijd voor Brisbane kan
genereren? Tevens zou ik graag bij elke datum en tijd de naam van de dag
willen berekenen. Kan ik dit ook opslaan onder dezelfde sting of moet ik dit
terplekke berekenen als men de gegevens uit het database opvraagd?

--
Rob Urlings

NSAVC: voorspel de uitslag van de GP van Brazilië
kijk voor meer informatie en de actuele stand op: http://f1.ufit.nl

Matthijs de Z
03/04/03, 13:20
> $datetimeaus =
> mktime(date("Y")-date("m")-date("d")-date("H")+10:date("i"):date("s"));

Ik heb het zo gedaan en dat werkt bij mij (mijn server staat in de VS en
heeft dus ook een tijdsverschil)
Ik vraag de standaard tijd op (van engeland) en tel daar voor mezelf een uur
bij op. Jij zou er dus 11 uur bij moeten optellen (geloof ik)

$verschil = "1";
$omrekenen = ($verschil * 60 * 60);
$tijdamsterdam = gmdate("d m Y H:i:s",time() + $omrekenen);
$dbtijdamsterdam = gmdate("Ymd H:i:s",time() + $omrekenen);

$tijdamsterdam ziet er uit als 03 04 2003 13:04:02
$dbtijdamsterdam ziet er uit als 20030403 13:04:02 die $dbtijdamsterdam
gebruik ik om makkelijker te kunnen sorteren.
mazzel,

Matthijs


>
> Dit genereerd echter de waarde '-1'. Kan iemand mij vertellen wat ik
> verkeerd doe en hoe ik wel de juiste datum en tijd voor Brisbane kan
> genereren? Tevens zou ik graag bij elke datum en tijd de naam van de dag
> willen berekenen. Kan ik dit ook opslaan onder dezelfde sting of moet ik
dit
> terplekke berekenen als men de gegevens uit het database opvraagd?
>
> --
> Rob Urlings
>
> NSAVC: voorspel de uitslag van de GP van Brazilië
> kijk voor meer informatie en de actuele stand op: http://f1.ufit.nl
>
>
>
>

Ronald Klip
03/04/03, 13:35
Rob Urlings schreef:
>
> $sql = "CREATE TABLE dagboek ( " .
> "nr INT NOT NULL AUTO_INCREMENT PRIMARY KEY, " .
> "naam varchar(250), " .
> "onderwerp varchar(250), " .
> "datumaus datetime, " .
> "datumned datetime, " .
> "bericht TEXT " .
> ")";
>
> Het probleem is nu eigenlijk om de juiste tijden op te slaan in het database
> wanneer een berichtje is ingevoerd. Omdat de server zich fysiek in Nederland
> bevindt, maak ik gebruik van de volgende regel in php om de waarde van het
> attribuut datumned te bepalen:
>
> $datetimened = date("Y-m-d-H:i:s");

Je kunt dit ook (handiger) door MySQL laten doen:
INSERT INTO dagboek (datumned) VALUES (NOW());

> Echter tegelijkertijd zou ik ook graag de datum en tijd van Brisbane in
> Australië willen opslaan. Hiervoor heb ik al uitgerekend dat Brisbane 10uur
> eerder is en het volgende stukje code in php geprogrammeerd:
>
> $datetimeaus =
> mktime(date("Y")-date("m")-date("d")-date("H")+10:date("i"):date("s"));
>
> Dit genereerd echter de waarde '-1'. Kan iemand mij vertellen wat ik
> verkeerd doe en hoe ik wel de juiste datum en tijd voor Brisbane kan
> genereren?

Zie de PHP-manual bij date() en mktime().
Dit gaat wellicht beter:
$datetimeaus = date("Y-m-d H:i:s", mktime(date("H")+10, date("i"),
date("s"), date("m"), date("d"), date("Y")));

Ook dat kan je door MySQL laten doen. Zie de MySQL-manual, 6.3.4 Date
and Time functions, DATE_ADD.
DATE_ADD(NOW(), INTERVAL 10 HOUR)
(niet getest)

> Tevens zou ik graag bij elke datum en tijd de naam van de dag
> willen berekenen. Kan ik dit ook opslaan onder dezelfde sting of moet ik dit
> terplekke berekenen als men de gegevens uit het database opvraagd?

Zie de PHP-manual bij date(), strftime(), en setlocale().

--
groet, Ronald

Daniel Tryba
03/04/03, 13:50
Rob Urlings <antwoord@in.newsgroep> wrote:
> "datumaus datetime, " .
> "datumned datetime, " .

Waarom 2 verschillende waarden? Is het tijdsverschil niet constant?

> Het probleem is nu eigenlijk om de juiste tijden op te slaan in het database
> wanneer een berichtje is ingevoerd. Omdat de server zich fysiek in Nederland
> bevindt, maak ik gebruik van de volgende regel in php om de waarde van het
> attribuut datumned te bepalen:
>
> $datetimened = date("Y-m-d-H:i:s");
>
> Echter tegelijkertijd zou ik ook graag de datum en tijd van Brisbane in
> Australi? willen opslaan. Hiervoor heb ik al uitgerekend dat Brisbane 10uur
> eerder is en het volgende stukje code in php geprogrammeerd:

http://www.mysql.com/documentation/mysql/bychapter/manual_Reference.html#Date_and_time_functions

DATE_ADD/DATE_SUB/ADDDATE/SUBDATE kunnen dat al voor je doen, het is
tamelijk zonde omdat werk uit te besteden aan PHP ipv dat gewoon door
MySQL te laten oplossen.

--

Daniel Tryba