Timezone selecteren
Maar nu wil ik graag dat je ook een tijdzone kunt selecteren of een andere manier hebt om de tijd goed te zetten.
Als er iets wordt opgeslagen in de database, bijvoorbeeld een bericht, wordt er bijna bij alles de tijd en datum bij gezet.
Het probleem is dat mensen soms moeite hebben met de tijd goed te krijgen. Stel dat de webhost server in Amerika staat, dan heb je een afwijking van een paar uur.
Je zit in nederland en ziet dat het 20.00 uur is, je plaatst iets op het forum van de site, en ziet daarna dat de tijd die erbij staat een paar uur afwijkt. Dat is dan natuurlijk omdat de PHP tijd op de server in Amerika een andere tijdzone heeft.
Hoe kan ik ervoor zorgen dat bij de installatie meteeen de tijd goed gezet kan worden?
Ik heb al zowieso besloten om het verschil tussen de systeemtijd en de (ingevulde) nieuwe tijd uit te rekenen en op te slaan in de database of een file. Als er dan iets in de datbase wordt gezet kan het forum zelf de juiste tijd berekenen.
Maar hoe ga ik dit laten invullen door de gebruiker bij het installeren?
Ik heb ook al geprobeerd om met PHP een dropdown lijst van alle tijdzones te genereren. Maar toen ik dat deed kreeg ik alleen een gevulde lijst met Afrika, Amerika en stukjes Azië.
Heeft iemand een goed idee?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?
// Weet niet zeker of dit altijd wel een complete lijst geeft van alle zones
$tzlist = DateTimeZone::listIdentifiers(DateTimeZone::ALL);
?>
<label for="time">Tijdzone:</label>
<select id="time" name="time_zone">
<?
foreach($tzlist as $key => $value) {
echo '<option value="'.$key.'">'.$value.'</option>';
}
?>
</select>
// Weet niet zeker of dit altijd wel een complete lijst geeft van alle zones
$tzlist = DateTimeZone::listIdentifiers(DateTimeZone::ALL);
?>
<label for="time">Tijdzone:</label>
<select id="time" name="time_zone">
<?
foreach($tzlist as $key => $value) {
echo '<option value="'.$key.'">'.$value.'</option>';
}
?>
</select>
Gewijzigd op 20/08/2013 20:19:00 door Mark Hogeveen
In ieder geval lijkt het me logisch dat je alle tijden slechts één keer wilt opslaan. je kunt als uitgangspunt dan GMT tijd aanhouden OF de lokale servertijd. De eerste lijkt mij makkelijker en ik zou dan de gebruikers bij het aanmaken van hun account vragen in welke tijdzone ze zijn. dan hoef je voor de gebruiker enkel de vertaalslag te maken van GMT naar hun lokale tijd.