Tijden en tijdzones in MySQL en PHP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java developer met testervaring

Java developer met testervaring Functieomschrijving "De drempel tussen de burger en de Belastingdienst zo laag mogelijk houden: dat is de belangrijke taak van ons team. Dit doen we door het burgerportaal Mijn Belastingdienst continu te verbeteren." René, Java-specialist bij de Belastingdienst. De keten Interactie is een samenwerkingsverband van alle dienstonderdelen binnen de Belastingdienst. Samen zorgen we dat het contact met burgers en bedrijven goed kan plaatsvinden. Onze belangrijkste opgave? Zoveel mogelijk digitaliseren. Dat doen we binnen het onderdeel Informatievoorzieningen (IV), de ICT-organisatie van de Belastingdienst. Denk bij de producten die IV-Interactie ontwikkelt en onderhoudt aan portalen, formulieren en authenticatie- en

Bekijk vacature »

Full Stack Developer Industriële Automatiseri

Raster wordt continu betrokken bij complexe en baanbrekende projecten in industriële automatisering. Ons team is gespecialiseerd in productie automatisering en proces automatisering projecten waarin procesveiligheid een belangrijk aspect is. Ons compact en groeiend OX (Operational Excellence) team ontwikkelt, configureert en levert support op zelfontwikkelde applicaties waarmee onze klanten hun productieprocessen slimmer, sneller, goedkoper en veiliger maken. Operational Excellence wordt zichtbaar gemaakt in resultaten. Bij bedrijven met dezelfde strategie, zal een operationeel excellent bedrijf een lager operationeel risico, lagere operationele kosten hebben en relatief meer winst maken. Het Raster OX team laat haar klanten de resultaten behalen door hun eigen procesdata

Bekijk vacature »

G Jansma

G Jansma

05/06/2017 19:15:27
Quote Anchor link
Hallo allemaal,

Ik heb een idee waarvan ik niet precies weet hoe ik dat het best kan uitwerken. Op mijn site wil ik wedstrijden laten zien die 'vandaag' worden gespeeld. Daarbij wil ik dan de tijd laten zien dat de wedstrijd begint voor de bezoeker en kunnen laten zien dat de wedstrijd bezig is of af is. Eventueel met een optie om dat om te zetten naar lokale tijden.

In de database wil ik dus de datum en tijd bewaren van een wedstrijd, ook plaats + land. Het punt is alleen dat die wedstrijden over de hele wereld plaats vinden, dus ik vermoed dat ik dan met tijdzones moet gaan rekenen? En speelt zomer- of wintertijd dan ook nog een rol? Ik raak een beetje verstrikt hoe ik dat moet uitwerken, zowel qua opslag in MySQL als hoe ik dat in PHP vervolgens moet gebruiken. Ik ben wel bekend met de PHP timezone functie op UTC om tijdverschillen te berekenen.

Hopelijk kunnen jullie me op weg helpen.
 
PHP hulp

PHP hulp

16/10/2021 01:53:53
 
- SanThe -

- SanThe -

05/06/2017 19:44:16
Quote Anchor link
De tijd (time) wordt op alle servers gesynchroniseerd met de wereldtijd.

Het lijkt mij dat je in de database dan dus TIMESTAMP gebruikt.

Hoe je het weergeeft is afhankelijk van de tijdzone waarin je leeft.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$a
=time();

date_default_timezone_set('Europe/Amsterdam');
echo '<br/>'.date('d-m-Y H:i:s', $a);

date_default_timezone_set('America/Los_Angeles');
echo '<br/>'.date('d-m-Y H:i:s', $a);
?>


Output:
05-06-2017 19:35:01
05-06-2017 10:35:01
 
G Jansma

G Jansma

05/06/2017 20:27:24
Quote Anchor link
Ok, maar hoe zou een TIMESTAMP in Mysql er dan uitzien voor een wedstrijd die in Amsterdam en in Los Angeles om 14.00 uur begint?
 
Ben van Velzen

Ben van Velzen

05/06/2017 20:43:18
Quote Anchor link
Ik zou gewoon opslaan als DATETIME, en met SET time_zone per pagina aan de slag gaan. Dan heb je meteen ook alle gevallen te pakken waar met/zonder zomertijd wordt gewerkt.
 
G Jansma

G Jansma

05/06/2017 21:24:00
Quote Anchor link
Ik wil zeg maar zoiets, dus een overzicht op dezelfde pagina (tijden even verzonnen):

Wedstrijd 1: 05.00 uur (Tokyo)
Wedstrijd 2: 11.00 uur (Amsterdam)
Wedstrijd 3: 12.00 uur (Amsterdam)
Wedstrijd 4: 19.00 uur (New York)

Voorbeeld voor een bezoeker uit Nederland bv.

Ik zie nog niet echt hoe ik dit kan bereiken.
Gewijzigd op 05/06/2017 21:38:43 door G Jansma
 
- Ariën -
Beheerder

- Ariën -

05/06/2017 22:03:28
Quote Anchor link
Ik zou de tijden dan als UTC opslaan, dan kan je veel makkelijker rekenen met tijdzones en dienst intervallen. Kan je dan date_default_timezone_set en strftime de juiste tijd tonen. Moet je alleen de landen van de bezoekers koppelen met de juiste tijdzone.
 
G Jansma

G Jansma

05/06/2017 22:24:53
Quote Anchor link
Ik heb misschien iets bedacht. Ik zou een table kunnen toevoegen aan de database met alle tijdzones in de wereld. Ik heb al een table met steden, daar zou ik dan de betreffende tijdzone aan kunnen toevoegen.

Dus table tijdzones:
276,"NL","Europe/Amsterdam"

En dan aan elke stad in NL die 276 toevoegen als tijdzone-waarde. Nadeel is dat ik dan bij landen met meerdere tijdzones moet uitzoeken in welke tijdzone een stad ligt. Voordeel is dat ik dan niet constant na hoef te gaan in welke tijdzone een plaats ligt bij invoer van een tijd.

Vervolgens zou ik dan de tijd kunnen opslaan als DATETIME en ophalen samen met de andere gegevens van de wedstrijd zoals de betreffende tijdzone, en verwerken in PHP zoals - San The - voorstelde. Zou dit zo kunnen werken of is dit te omslachtig gedacht?

Edit:
Klopt denk ik niet helemaal wat ik zeg, want ik moet natuurlijk weten hoelaat het in Amsterdam is als om 14.00 uur een wedstrijd in Los Angeles wordt gespeeld.

@Ariën: In dat geval moet ik tijden zelf gaan verrekenen bij invoer? Ik denk dat het een stuk makkelijker is als ik gewoon lokale tijden kan invoeren.
Gewijzigd op 05/06/2017 22:37:44 door G Jansma
 
Ben van Velzen

Ben van Velzen

05/06/2017 22:51:21
Quote Anchor link
Die tabel die je noemt is ook al onderdeel van PHP, en in mindere mate ook van MySQL. Je zou het dus nog iets verder kunnen vereenvoudigen.
 
Thomas van den Heuvel

Thomas van den Heuvel

06/06/2017 02:28:47
Quote Anchor link
G Jansma op 05/06/2017 22:24:53:
@Ariën: In dat geval moet ik tijden zelf gaan verrekenen bij invoer? Ik denk dat het een stuk makkelijker is als ik gewoon lokale tijden kan invoeren.

Nee, want tijdfuncties gebruiken doorgaans UTC al als uitgangszone / tussenstap, sla de functies er maar eens op na. Alles opslaan als UTC lijkt mij het makkelijkst. Dit moet je wel ergens documenteren of moet ergens uit blijken, en je moet uiteraard bij het invoeren opgeven welke regio het betreft zodat dit automatisch (omdat de functies met UTC werken) wordt omgerekend.

Een bijkomend voordeel is dat als je in tijdszone A zit en je wilt een wedstrijd in tijdszone B zien dan hoef je maar één keer een tijd om te rekenen, namelijk [tijd van de wedstrijd in UTC] --> [jouw tijdszone A], om erachter te komen hoe laat een wedstrijd jouw lokale tijd wordt uitgezonden.
Gewijzigd op 06/06/2017 02:29:04 door Thomas van den Heuvel
 
G Jansma

G Jansma

06/06/2017 10:49:28
Quote Anchor link
Oké, ik zou dus zoiets moeten doen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php

//ophalen uit database
$datetime1 = '2018-01-01 12:00:00';
$timezone1 = 'Asia/Tokyo';

$datetime2 = '2018-01-01 12:00:00';
$timezone2 = 'Europe/Amsterdam';

$datetime3 = '2018-01-01 12:00:00';
$timezone3 = 'America/New_York';

//ophalen uit browser
$user_timezone = 'Europe/Amsterdam';


$date1 = DateTime::createFromFormat('Y-m-d H:i:s', $datetime1, new DateTimeZone($timezone1));
$date1 ->setTimeZone(new DateTimeZone($user_timezone));

$date2 = DateTime::createFromFormat('Y-m-d H:i:s', $datetime2, new DateTimeZone($timezone2));
$date2 ->setTimeZone(new DateTimeZone($user_timezone));

$date3 = DateTime::createFromFormat('Y-m-d H:i:s', $datetime3, new DateTimeZone($timezone3));
$date3 ->setTimeZone(new DateTimeZone($user_timezone));

echo $date1->format('Y-m-d H:i');
echo "<br>";
echo $date2->format('Y-m-d H:i');
echo "<br>";
echo $date3->format('Y-m-d H:i');

?>


Een bijkomend probleem waar ik tegen aanloop is dat je met PHP kennelijk niet de tijdzone van een bezoeker kan achterhalen? Ik heb geen users op mijn site, dus zelf laten instellen kan niet. Ik begrijp dat ik dan met Javascript moet werken, en dan de pagina moet verversen en de tijdzone meegeven als session? Dat lijkt me niet echt wenselijk namelijk. Wat zou de beste optie daarvoor zijn?

@Ben van Velzen: Hoe bedoel je dat precies? Hoe werkt dat in Mysql dan?
 
Ward van der Put
Moderator

Ward van der Put

06/06/2017 11:09:08
Quote Anchor link
Volgens mij moet je de functionele vereiste "vandaag" vooral niet té letterlijk formuleren. Als een wedstrijd om 00:30 's nachts begint in de tijdzone van de gebruiker, dan is dat namelijk "pas morgen". En dan zou je zo'n wedstrijd dus missen.

Waarschijnlijk is een ruimer criterium zoals "de komende 24 uur" praktischer.

Vergelijk het met een tv-gids. Je wilt niet weten welke films er "vandaag" op tv zijn, want aan films die al zijn afgelopen heb je niets en omgekeerd wil je de films die 's nachts na 00:00 beginnen misschien juist wel zien.
 
Ben van Velzen

Ben van Velzen

06/06/2017 11:26:56
Quote Anchor link
>> Een bijkomend probleem waar ik tegen aanloop is dat je met PHP kennelijk niet de tijdzone van een bezoeker kan achterhalen?

Correct, hiervoor zou je naar een third party moeten gaan. De google maps API bijvoorbeeld heeft timezone offsets om te gebruiken.

Binnen mysql zou je iets kunnen doen als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SET time_zone = 'Europe/Amsterdam';
 
G Jansma

G Jansma

06/06/2017 22:19:12
Quote Anchor link
@Ward: Aardig punt, maar voorlopig is dat nog niet echt wat ik nodig heb. Wedstrijden die geweest zijn zijn in tegenstelling tot films namelijk nog wel interessant. Maar ik zal het in het achterhoofd houden.

@Ben: Ik snap niet zo goed wat die SET time_zone kan doen als ik de datum en tijdzone afzonderlijk ophaal uit Mysql? Wat betreft die API is dat misschien een optie, al ben ik tot dusver niet zo bekend met Javascript en kan ik die API's soms maar moeilijk doorgronden.

Maar wat denken jullie van het scriptje? Is dit de way to go?
 
- SanThe -

- SanThe -

07/06/2017 12:48:48
Quote Anchor link
Het is slechts een testopzet.
Misschien een beetje slordig nog.
Maar het werkt.

Is de tekst in het overzicht groen dan is de wedstrijd bezig.
Is het rood dan is die voorbij.

Uiteraard moet je het geheel aan jouw eisen e.d. aanpassen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
<?php
/*
Database            Test@2017

Tabel timezones
    id                INT            AUTO_INCREMENT
    zone            VARCHAR        40
    
Tabel wedstrijden
    id                INT            AUTO_INCREMENT
    naam            VARCHAR        40
    begintijd        DATETIME
    eindtijd        DATETIME
    plaats            VARCHAR        40
    zone            INT
*/

ini_set('display_errors',1);
error_reporting(E_ALL);

date_default_timezone_set('Europe/Amsterdam');

session_start();
$maxSteden = 5;

$siteMySQL['host']                    = 'localhost';
$siteMySQL['user']                    = 'Test@2017';
$siteMySQL['pass']                    = 'Test@2017';
$siteMySQL['db']                    = 'Test@2017';
$mysqli = @mysqli_connect($siteMySQL['host'], $siteMySQL['user'], $siteMySQL['pass'], $siteMySQL['db']);

# Errorafhandeling: Kan je iets moois van maken
function showError($regel, $error)
{
    exit('Error op regel '.$regel.': '.$error);
}


# Alle bestaande timezones uit de database halen
$sql = "    SELECT    zone
            FROM    timezones
        "
;
if(($result = @mysqli_query($mysqli, $sql)) === false)
{
    showError(__LINE__, mysqli_error($mysqli));
}


$checkTimezonesArray = array();
while($row = @mysqli_fetch_assoc($result))
{
    $checkTimezonesArray[] = $row['zone'];
}


# Alle bestaande timezones van PHP ophalen
$phpTimezonesArray = timezone_identifiers_list();

# Javascript voor het formulier
?>

<script type="text/javascript">
    phpTimezonesArray = [];
    function setSelect(value)
    {    for(i=0;i<phpTimezonesArray.length;i++)
        {    if(phpTimezonesArray[i].plaats.toLowerCase().indexOf(value.toLowerCase()) >= 0)
            {    document.getElementById('plaats').value = phpTimezonesArray[i].plaats;
                document.getElementById(phpTimezonesArray[i].zone).selected = 'true';
            }
        }
    }
    function setStad(value, id)
    {    for(i=0;i<phpTimezonesArray.length;i++)
        {    if(phpTimezonesArray[i].plaats.toLowerCase().indexOf(value.toLowerCase()) >= 0 && value != '')
            {    document.getElementById('stad'+id).value = phpTimezonesArray[i].plaats;
            }
        }
    }
</script>
<?php
foreach($phpTimezonesArray as $phpTimezone)
{
    # Geef de timezones door aan Javascript
    echo '<script type="text/javascript">';
        $hulp = json_encode(array('plaats'=>substr(strrchr($phpTimezone, '/'), 1), 'zone'=>$phpTimezone));
        echo 'phpTimezonesArray.push(JSON.parse(\''.$hulp.'\'));';
    echo '</script>';
    # Check of de PHP-timezone al in de database zit
    if(!in_array($phpTimezone, $checkTimezonesArray))
    {
    # Zo niet INSERT
        echo $phpTimezone.' is toegevoegd.<br/>';
        $sql = "    INSERT INTO timezones
                    (
                        zone
                    )
                    VALUES
                    (
                        '"
.@mysqli_real_escape_string($mysqli, $phpTimezone)."'
                    )
                "
;
        if(@mysqli_query($mysqli, $sql) === false)
        {
    showError(__LINE__, mysqli_error($mysqli));
        }
    }
}


# Wedstrijdenoverzicht met de tijden uit de timezone
function showWedstrijden($zone='Amsterdam')
{
    global $mysqli;
    $sql = "    SELECT    zone
                FROM    timezones
                WHERE    zone LIKE '%/"
.@mysqli_real_escape_string($mysqli, $zone)."'
            "
;
    if(($result = @mysqli_query($mysqli, $sql)) === false)
    {
    showError(__LINE__, mysqli_error($mysqli));
    }

    $row = @mysqli_fetch_assoc($result);
    if(@mysqli_num_rows($result) > 0)
    {
    $timezone = $row['zone'];
    }

    $sql = "    SELECT    w.naam, w.begintijd, w.eindtijd, w.plaats, t.zone
                FROM    timezones as t, wedstrijden as w
                WHERE    w.zone = t.id
                ORDER BY w.begintijd ASC
            "
;
    if(($result = @mysqli_query($mysqli, $sql)) === false)
    {
    showError(__LINE__, mysqli_error($mysqli));
    }

    date_default_timezone_set($timezone);
    echo '<br/><strong>Tijdzone '.$timezone.'</strong> '.date('d-m-Y H:i').'<br/>';
    while($row = @mysqli_fetch_assoc($result))
    {
    date_default_timezone_set($timezone);
        $now = date('YmdHis');
        date_default_timezone_set('Europe/Amsterdam');
        $begintijd = strtotime($row['begintijd']);
        $eindtijd = strtotime($row['eindtijd']);
        date_default_timezone_set($timezone);
        $style = ($now > date('YmdHis',$begintijd)) ? ' style="color:green;"' : '';
        $style = ($now > date('YmdHis',$eindtijd)) ? ' style="color:red;"' : $style;
        echo '<span'.$style.'>'.date('d-m-Y H:i',$begintijd).' '.date('d-m-Y H:i',$eindtijd).' '.$row['naam'].' '.$row['plaats'].' '.$row['zone'].'</span><br/>';
    }
}


# Afhandeling formulieren
if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['form']))
{
    switch($_POST['form'])
    {    case
'wedstrijd'    :
            # Alle tijden worden in timezone Europe/Amsterdam in de databse gezet
            $sql = "    SELECT    id, zone
                        FROM    timezones
                        WHERE    zone = '"
.@mysqli_real_escape_string($mysqli, $_POST['zone'])."'
                    "
;
            if(($result = @mysqli_query($mysqli, $sql)) === false)
            {
    showError(__LINE__, mysqli_error($mysqli));
            }

            $row = @mysqli_fetch_assoc($result);
            date_default_timezone_set($row['zone']);
            $begintijd = strtotime($_POST['begintijd']);
            $eindtijd = strtotime($_POST['eindtijd']);
            date_default_timezone_set('Europe/Amsterdam');
            $sql = "    INSERT INTO wedstrijden
                        (
                            naam,
                            begintijd,
                            eindtijd,
                            plaats,
                            zone
                        )
                        VALUES
                        (
                            '"
.@mysqli_real_escape_string($mysqli, $_POST['naam'])."',
                            '"
.date('Y-m-d H:i:00', $begintijd)."',
                            '"
.date('Y-m-d H:i:00', $eindtijd)."',
                            '"
.@mysqli_real_escape_string($mysqli, $_POST['plaats'])."',
                            '"
.$row['id']."'
                        )
                    "
;
            if(@mysqli_query($mysqli, $sql) === false)
            {
    showError(__LINE__, mysqli_error($mysqli));
            }

        break;
        case
'overzicht'    :
            # De steden voor het overzicht in de session zetten
            for($i=1;$i<=$maxSteden;$i++)
            {
    $_SESSION['stad'.$i] = (empty($_POST['stad'.$i])) ? '' : $_POST['stad'.$i];
            }

        break;
    }
}

# De formulieren
?>

<div style="float:left;">
    <strong>Ingeven van een wedstrijd</strong><br/>
    <form action="" method="post">
        <input type="hidden" name="form" value="wedstrijd"/>
        <input name="naam"/> Naam Wedstrijd<br/>
        <input id="plaats" list="plaatsen" name="plaats" autocomplete="off" onchange="setSelect(this.value);"/> Naam van de Stad<br/>
            <datalist id="plaatsen">
                <?php
                foreach($phpTimezonesArray as $phpTimezone)
                {
    echo '<option value="'.(substr(strrchr($phpTimezone, '/'), 1)).'">';
                }

                ?>

            </datalist>
        <input name="begintijd"/> Locale Begin Datum en Tijd (YYYY-MM-DD HH:MM)<br/>
        <input name="eindtijd"/> Locale Eind Datum en Tijd (YYYY-MM-DD HH:MM)<br/>
        <select name="zone">
            <option id="leeg"></option>
            <?php
            foreach($phpTimezonesArray as $timezone)
            {
    echo '<option id="'.$timezone.'">'.$timezone.'</option>';
            }

            ?>

        </select> Tijdzone<br/>
        <input type="submit"/><br/><br/>
    </form>
</div>

<div style="float:right;text-align:right;">
    <strong>Steden van het overzicht</strong><br/>
    <form action="" method="post">
        <input type="hidden" name="form" value="overzicht"/>
        <?php
        for($i=1;$i<=$maxSteden;$i++)
        {
    echo 'Stad '.$i.' <input id="stad'.$i.'" list="plaatsen" name="stad'.$i.'" autocomplete="off" onchange="setStad(this.value, '.$i.')" value="'.(isset($_SESSION['stad'.$i]) ? $_SESSION['stad'.$i] : '').'"/><br/>';
        }

        ?>

        <input type="submit"/><br/><br/>
    </form>
</div>

<div style="clear:both;"></div>
<?php
# De overzichten
for($i=1;$i<=$maxSteden;$i++)
{
    if(!empty($_SESSION['stad'.$i]))
    {
    echo '<div style="margin:0px auto;width:600px;">';
            showWedstrijden($_SESSION['stad'.$i]);
        echo '</div>';
    }
}

?>
Gewijzigd op 07/06/2017 12:51:38 door - SanThe -
 
G Jansma

G Jansma

07/06/2017 23:09:09
Quote Anchor link
Wow, wat een uitgebreid script. Ik kom hier zeker op terug als ik de tijd heb om dit even allemaal uit te vogelen. Enorm bedankt alvast!
 
- SanThe -

- SanThe -

07/06/2017 23:16:58
Quote Anchor link
Graag gedaan.

Ik was zelf ook wel nieuwsgierig geworden hoe dit nou zou moeten werken. Het was leuk en leerzaam om het uit te zoeken. Het werkt hier perfect.

Ik hoor het wel als er vragen zijn.
 
G Jansma

G Jansma

13/06/2017 18:27:51
Quote Anchor link
Ik heb het allemaal bekeken, en het werk erg mooi. Bedankt daarvoor! Het enige probleem waar ik nog tegen aan loop is dat ik direct wil nagaan in welke tijdzone iemand zit. Nu voer je de locaties zelf in, maar dat is dus iets wat ik niet wil. Enig idee hoe dat het best zou kunnen?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

13/06/2017 22:05:47
Quote Anchor link
Het is internet he. Een request kan uit elke uithoek van de wereld komen maar ziet er altijd hetzelfde uit. De enige kleine houvast is een ip adres. Zie https://stackoverflow.com/questions/743505/how-to-get-time-zone-through-ip-address-in-php. Maar ook hier zitten nog haken en ogen aan.

Wil je de gebruiker op maat gesneden tijden laten zien dan zou ik er toch voor kiezen om een account aan te bieden aan de gebruiker.
 
Thomas van den Heuvel

Thomas van den Heuvel

14/06/2017 00:45:18
Quote Anchor link
Cookie niet goed genoeg om een voorkeurstijdzone te onthouden? :/
 
- Ariën -
Beheerder

- Ariën -

14/06/2017 00:54:42
Quote Anchor link
Cookies voor tijdzones? Na een inlog elders, of bij het cleanen van je cookies sta je weer op UTC.
Als je al een useraccount-systeem hebt, dan kan je de tijdzone prima opslaan. Je moet wel rekening houden met de wintertijd, want dan verandert de uur-interval ook. Of sla in zijn profiel op in welk land hij woont, en stem de tijdzones daarop af.

Ik denk dat grotere sites wel met landherkenning werken en Geo2IP databases, en alle landen per tijdzone hebben ingedeeld. Er is zelfs een complete dataset voor in diverse formaten.
Gewijzigd op 14/06/2017 01:01:02 door - Ariën -
 
G Jansma

G Jansma

26/08/2017 15:48:15
Quote Anchor link
Ik dacht dat ik het allemaal perfect voor elkaar had, maar loop toch weer tegen een probleem aan met mijn tijdzone.

Ik selecteer namelijk op basis van de datum van de tijdzone, en dan op de wedstrijden die dag. Maarja, als je dan in Australië woont ben je dus al een dag verder terwijl er in de USA nog wedstrijden moeten worden verreden. Niet zo slim dus. Precies het probleem wat Ward hier al eerder schetste met een tv-gids. Nu krijg je dus afhankelijk van je tijdzone wisselende resultaten, maar dat moet dus eigenlijk niet nee.

Maar kan ik vanuit Mysql zelf al ophalen welke wedstrijden er de komende 24 uur (en afgelopen 12 uur) zijn? Aangezien de tijden allemaal UTC (?) zijn, en die vervolgens met tijdzone worden omgezet naar de daadwerkelijke tijd. Of moet ik dat eerst met PHP ophalen, de tijden omzetten, en daarmee opnieuw de betreffende wedstrijden ophalen uit Mysql?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.