|
| Ændre tid Fra : Arvid Mærsk |
Dato : 11-01-07 14:06 |
|
Jeg har et tilmeldingssystem hvor tilmeldingstidspunktet lægges i tabellen med:
$sql = "insert into tabel(navn,tid) values('$navn',now())";
Det virker perfekt bortset fra at MySQL-serverens tid er GMT og dermed
bliver tilmeldingstidspunktet registreret 1 time senere end dansk lokaltid.
Jeg får output af tidspunktet med:
$sql = "select navn, date_format(tid, '%e.%c.%Y kl. %H:%i:%s') as tiden from
tabel";
echo "$navn, $tiden";
Her vises naturligvis GMT-tidspunktet, men hvordan får jeg output justeret,
således at der tages højde for tidsforskellen?
--
AM
| |
Martin (11-01-2007)
| Kommentar Fra : Martin |
Dato : 11-01-07 14:32 |
|
Arvid Mærsk wrote:
> Jeg har et tilmeldingssystem hvor tilmeldingstidspunktet lægges i
> tabellen med:
>
> $sql = "insert into tabel(navn,tid) values('$navn',now())";
>
> Det virker perfekt bortset fra at MySQL-serverens tid er GMT og dermed
> bliver tilmeldingstidspunktet registreret 1 time senere end dansk lokaltid.
Hvis det er på en dansk webhost, så synes jeg at du lige skulle kontakte
deres support eller lign, og lige få deres server tid sat ordentligt ind :)
>
> Jeg får output af tidspunktet med:
>
> $sql = "select navn, date_format(tid, '%e.%c.%Y kl. %H:%i:%s') as tiden
Du kan skrive
DATE_FORMAT(
DATE_ADD(tid, INTERVAL 1 HOUR), '%e.%c.%Y kl. %H:%i:%s') AS tiden
Altså DATE_ADD ligger 1 time til tiden i ovenstående.
Men det er jo bare ikke særlig fedt egentlig - det burde være serveren
der skal ændres imo
| |
Arvid Mærsk (11-01-2007)
| Kommentar Fra : Arvid Mærsk |
Dato : 11-01-07 15:16 |
|
Hej, d. 11-01-2007 14:32 skrev du bl.a.:
> Du kan skrive
> DATE_FORMAT(
> DATE_ADD(tid, INTERVAL 1 HOUR), '%e.%c.%Y kl. %H:%i:%s') AS tiden
>
> Altså DATE_ADD ligger 1 time til tiden i ovenstående.
>
> Men det er jo bare ikke særlig fedt egentlig - det burde være serveren
> der skal ændres imo
Jeg prøver. Jeg tør næsten ikke nævne det, men sitet ligger hos Servage
Og selv om serveren er i Tyskland, er deres servertime GMT. Jeg har
kontaktet Servage og løsningen var at jeg skulle justere i scriptet.
Bortset fra det er MySQL-serveren hos 1go.dk præcis 30 minutter foran vores
okaltid, blot til info.
--
hilsen AM
| |
Martin (11-01-2007)
| Kommentar Fra : Martin |
Dato : 11-01-07 16:05 |
|
Arvid Mærsk wrote:
> Og selv om serveren er i Tyskland, er deres servertime GMT. Jeg har
> kontaktet Servage og løsningen var at jeg skulle justere i scriptet.
Må vi se løsningen?
> Bortset fra det er MySQL-serveren hos 1go.dk præcis 30 minutter foran
> vores okaltid, blot til info.
Nu ser jeg heller ikke 1go.dk som særlig seriøs, men det er nok bare mig :D
| |
Arvid Mærsk (11-01-2007)
| Kommentar Fra : Arvid Mærsk |
Dato : 11-01-07 16:25 |
|
Hej, d. 11-01-2007 16:04 skrev du bl.a.:
> Må vi se løsningen?
Løsningen? At jeg skulle justere scriptet og det gjorde jeg ved at
copy/paste dit forslag
DATE_FORMAT(
DATE_ADD(tid, INTERVAL 1 HOUR), '%e.%c.%Y kl. %H:%i:%s') AS tiden
Det virker perfekt efter hensigten og med linket fra Jesper fandt jeg ud af
både at lægge tid til og trække tid fra. Ikke blot timer men også minutter.
Så problemet med 1go.dk fik jeg også klaret. Kanon til jer begge.
--
hilsen AM
| |
Martin (11-01-2007)
| Kommentar Fra : Martin |
Dato : 11-01-07 16:55 |
|
Arvid Mærsk wrote:
> Hej, d. 11-01-2007 16:04 skrev du bl.a.:
>
> > Må vi se løsningen?
>
> Løsningen? At jeg skulle justere scriptet og det gjorde jeg ved at
> copy/paste dit forslag
Ahh.. jeg havde læst det som om du skulle ændre noget, som supporten
havde sagt :)
> Det virker perfekt efter hensigten og med linket fra Jesper fandt jeg ud
> af både at lægge tid til og trække tid fra. Ikke blot timer men også
> minutter. Så problemet med 1go.dk fik jeg også klaret. Kanon til jer begge.
Jamen, det var så lidt - jeg ville nok bruge Jespers forslag hvis det er
en tidszone der er forskellen.
| |
JMo. (11-01-2007)
| Kommentar Fra : JMo. |
Dato : 11-01-07 20:20 |
|
Arvid Mærsk wrote:
> DATE_FORMAT(
> DATE_ADD(tid, INTERVAL 1 HOUR), '%e.%c.%Y kl. %H:%i:%s') AS tiden
>
> Det virker perfekt efter hensigten og med linket fra Jesper fandt jeg
> ud af både at lægge tid til og trække tid fra. Ikke blot timer men
> også minutter. Så problemet med 1go.dk fik jeg også klaret. Kanon til
> jer begge.
Men pas på når vi skifter til sommer-tid.
| |
Jesper Brunholm (11-01-2007)
| Kommentar Fra : Jesper Brunholm |
Dato : 11-01-07 15:54 |
|
Arvid Mærsk skrev:
> Jeg har et tilmeldingssystem hvor tilmeldingstidspunktet lægges i
> tabellen med:
>
> $sql = "insert into tabel(navn,tid) values('$navn',now())";
>
> Det virker perfekt bortset fra at MySQL-serverens tid er GMT og dermed
> bliver tilmeldingstidspunktet registreret 1 time senere end dansk lokaltid.
>
> Jeg får output af tidspunktet med:
>
> $sql = "select navn, date_format(tid, '%e.%c.%Y kl. %H:%i:%s') as tiden
> from
> tabel";
> echo "$navn, $tiden";
>
> Her vises naturligvis GMT-tidspunktet, men hvordan får jeg output justeret,
> således at der tages højde for tidsforskellen?
Du kan løse det med PHP ved at hente et UNIX_TIMESTAMP(tid) as tiden, og
så formatere med date(), eller omregne med mktime, ingen af delene er
dog særligt elegant.
Hvis du vil løse det i SQL-querien (som du næsten har gjort her), så er
det ret beset et databasespørgsmål, så du kan overveje dk.edb.database
som relevant gruppe næste gang du har et lignende spørgsmål
Når det er sagt, så er der til gengæld gode værktøjer til rådighed,
lavet til formålet:
< http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#id3086191>
Mvh
Jesper Brunholm
| |
Arvid Mærsk (11-01-2007)
| Kommentar Fra : Arvid Mærsk |
Dato : 11-01-07 16:08 |
| | |
|
|