Avatar billede langkiller Nybegynder
08. september 2010 - 02:43 Der er 7 kommentarer og
1 løsning

time() plus/minus en variabel (gmt/tidszone)

Sidder og bøvler lidt med det sidste i forb. med nogle timestamps hvor der gerne skulle lægges gmt til (eller trækkes fra)

Gmt variablen indeholder +/- og så sekunder afhængig af den pågældende gmt.. fx: + 3600 hvis gmt er sat til +01:00

Kan dog ikke få time() eller nogle andre variabler der indeholder timestamps plusset sammen med gmt variablen..

Koden:

$gmt_sql = mysql_query("SELECT gmt FROM users WHERE id='$_SESSION[user_id]'");
$gmt = mysql_result($gmt_sql,0);

// den kan plusser ikke de to tal sammen her
$time_gmt = $gmt + time();

print date('l jS \of F Y h:i A',$time_gmt);


Kunne det evt skyldes at $gmt indeholder et plus/minus tegn? og er der evt. en bedre løsning?
Avatar billede showsource Seniormester
08. september 2010 - 07:53 #1
<?php

mysql_connect("localhost", "user", "pass") or die (mysql_error());

echo mysql_result(mysql_query("SELECT NOW()"),0);

mysql_query("SET time_zone = '-04:00'") or die (mysql_error());

echo"<p>".mysql_result(mysql_query("SELECT NOW()"),0);

?>

Mener det kræver mysql ver. >= 5.025 ?
Avatar billede langkiller Nybegynder
08. september 2010 - 12:28 #2
Tak for dit svar, men er ikke sikker på at det er det skal bruge her.

Du skulle vel aldrig vide om denne her sætning er skrevet forkert?
$time_gmt = $gmt + time();

Kan man overhovedet lægge til eller trække noget fra time(); ?
Avatar billede showsource Seniormester
08. september 2010 - 13:43 #3
Hvis du gemmer en brugers tidszone i stil med +08:00:00 skal det jo gå galt hvis du prøver at +/- på time()

Og umiddelbart, vil jeg da tro det netop er noget du kan bruge, mysql's SET time_zone.
Avatar billede langkiller Nybegynder
08. september 2010 - 13:51 #4
tidszonen er gemt som en VARCHAR (indeholder fx. "+ 3600") .. altså i sekunder

Har ikke rigtig arbejdet med tidszoner før. så SET time_zone siger mig ikke det store.. Men hvis det er en bedre løsning må jeg hellere kigge nærmere på det.
Avatar billede showsource Seniormester
08. september 2010 - 14:23 #5
Hmm, nu prøvede jeg så at gemme tidszone i en tabel, og derefter hente ud til brug for SET time_zone, og det virker.


$tid = mysql_result(mysql_query("SELECT tid FROM timezones WHERE id = 1"),0);

mysql_query("SET time_zone = '".$tid."'") or die (mysql_error());

echo mysql_result(mysql_query("SELECT NOW()"),0);

tidszone er gemt som f.eks.

+08:00
-04:00

i et varcharfelt
Avatar billede langkiller Nybegynder
08. september 2010 - 17:38 #6
Jamen så siger jeg mange tak for hjælpen :)

smid et svar
Avatar billede arne_v Ekspert
09. september 2010 - 03:12 #7
Umidelebart synes jeg at det løs mest nærliggende at:
- gemme tidszone navnet i databasen
- hente den når den skal bruges
- kalde date_default_timezone_set med den i PHP
Avatar billede showsource Seniormester
09. september 2010 - 06:57 #8
Jahh, der er jo flere muligheder.
Afhængig af opbygning, ville jeg nok vælge sql løsningen.
Og evt. bruge muligheden for at "skifte sprog"

mysql_query("SET lc_time_names='da_DK'");

$dato = mysql_query("SELECT DATE_FORMAT(NOW(), '%W d. %d %M')") or die (mysql_error());

echo mysql_result($dato,0);
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester