Toon posts:

PHP datum klopt niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey allemaal,

ik werd door iemand hierheen gestuurd met een vraag over PHP. Ik heb voor deze vraag wel op dit forum een search gedaan, maar nog niks bruikbaars gevonden (ik zag soms deze vraag wel terugkomen, maar helaas geen duidelijk antwoord).

Dit is het probleem: ik wil een datetime opslaan in een MySQL database, en hiervoor gebruikte ik
PHP:
1
<?date('Y-m-d h:i:s');?>

. Helaas wordt dan de tijd 6 uur eerder weergegeven. De server stond als het goed is in Nederland, maar weet ik nu niet zeker meer. Hoe dan ook, ik kreeg van iemand een tip om het te proberen met de setlocal() en strftime() commando's. Ik heb wel de datum en tijd kunnen krijgen zoals met date(), maar ook hier was de tijd 6 uur eerder dan GMT +1.
PHP:
1
<?setlocale (LC_ALL, 'nl_NL');?>

en
PHP:
1
<?setlocale (LC_ALL, 'nl_NL.ISO8859-1');?>

werkten helaas niet. Zou iemand me hierbij kunnen helpen? Alvast bedankt :).

  • a casema user
  • Registratie: Januari 2000
  • Laatst online: 31-08 12:58
je bedoelt 06:00 ipv 18:00 :?
#

our, 12-hour format; i.e. "01" to "12"
#

H - hour, 24-hour format; i.e. "00" to "23"
dus H gebruiken ipv h

Taaaa taa taa taaaa taa taa ta taaataaaaa.


Verwijderd

[d2k]sommige dingen staan wel erg letterlijk in de manual[/d2k] :)

Als je de manier van a casema user bedoelt ten minste. Ik kan niet echt uit je verhaal opmaken wat de bedoeling is

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Waarom moeilijk doen in PHP? :? Check de [url="http://www.mysql.com/doc/D/a/Date_and_time_functions.html"]datetime functies[/url] van MySQL eens (zoals NOW())... stukken makkelijker.

On track


Verwijderd

Topicstarter
Ik dacht dat ik het goed had uitgelegd, maar nu ik het nóg eens nalees staan er idd fouten in. Ik bedoelde 6 uur eerder, dus als het bij ons nu 20:54 is, wordt er 14:54 geretourneerd. Ik wil die tijd (via de functie zoals beschreven) opslaan in een MySQL database. Dat lukt allemaal wel, behalve dan dat feit dat de tijd niet klopt met GMT +1. Dat zou ik dus graag goed willen hebben.

WouZz > Ik zal het even nalezen.

Verwijderd

Topicstarter
Ik kon helaas niet echt wijs uit het artikel worden. Wat ik ook probeerde, het gaf een error (ik ben nog niet zo goed in php/mysql).

Ik probeerde dit:
ADDDATE(date('Y-m-d h:i:s'),INTERVAL 6 HOUR)
Ook MySQL > ervoor gaf een error. [b]HOUR[b] in HOURS veranderen hielp ook niet. Dus even nogmaals mijn vraag in het kort: Wie zou me kunnen helpen om bij de tijd die ik verkrijg met date(), 6 uur op te tellen? Dus 14:55 wordt 20:55. Ik kan wel een scriptje bedenken om dat te doen, maar je moet dan ook kijken of het aantal uren niet hoger is dan 24, dus dan is het de volgende dag. Of die dag toevallig in een nieuwe maand plaatsvind, en ga zo maar door.

Is hier überhaubt een oplossing voor? Het maakt mij niet uit of ik hem moet opslaan (in de database) als servertijd +6 uur, of dat ik de servertijd normaal opsla, en dan op m'n php-pagina's die tijd laat zien, +6 uur.

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
date() heeft volgens mij maling aan setlocale().

gebruik [url="http://www.php.net/manual/en/function.strftime.php"]strftime()[/url] of ga nog wat door met mysql, maar gewoon 6 uur erbij plakken is eigenlijk NOT DONE.

edit: oeps, lezen is ook een vak :) .. op een windows-bak (bij mij iig, winXP) gebruik ik setlocale( LC_ALL, 'Dutch' ); wat wel werkt, de rest niet.

Verwijderd

Topicstarter
Beetje late reactie van mezelf, maar zo'n vakantie-baantje helpt niet echt ;).

Ik heb nu dit scriptje geprobeerd:

PHP:
1
2
3
4
5
6
7
8
9
echo date('Y-m-d H:i:s');
echo '<br>';
echo strftime ("%Y-%m-%d %H:%M:%S");
echo '<br><br>';
setlocale( LC_ALL, 'Dutch' );
echo date('Y-m-d H:i:s');
echo '<br>';
echo strftime ("%Y-%m-%d %H:%M:%S");
echo '<br>';


Ik krijg hierbij 4 keer dezelfde tijd te zien (2002-08-04 14:29:05 terwijl het dus half 9 en niet half 3 was). iig bedankt voor je hulp. Zijn er geen andere oplossingen?

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

setlocale is echt alleen voor de naamgeving

wat jij volgens mij zoekt is http://www.php.net/manual/en/function.gmdate.php

Klaar voor een nieuwe uitdaging.


Verwijderd

Dus alleen 6 uur optellen bij de tijd die je in een datetime veld wilt zetten?

Werkt iets als

INSERT blah SET datumtijd=NOW() + 360

niet?

of iets als:

$iets = date('Y-m-d H:i:s', time() + 360);

...en dan $iets inserten?
Pagina: 1