Page 1 of 2 1 2 LastLast
Results 1 to 15 of 16

Thread: Tijdzones - waar converteren?

  1. #1

    Tijdzones - waar converteren?

    Hallo hallo,

    In mijn database zijn alle tijden geconverteerd naar UTC. Hoe kan ik nu in mijn applicatie het beste de lokale tijd tonen en laten invoeren. De conversie van lokale tijd naar UTC en terug is geen probleem. Het gaat erom waar deze conversie plaats moet vinden. Voor alleen het tonen van de lokale datetime had ik al bedacht dat ik een calculated field kon gebruiken, maar ik wil ook dat de eindgebruiker bij een insert/update de lokale tijd kan invoeren! Ik maak gebruik datasets en data-aware controls.

    Bij voorbaat dank!

  2. #2
    Ik zou op gaan slaan in UTC, samen met de actuele afwijking t.o.v. UTC. Bij ons in de zomer is dat +2:00 en in de winter +1:00. Op die manier hoef je niet steeds uit te zoeken wat op de betreffende datum de afwijking was.

    Conversies zou ik op de server doen. Als je weet in welke timezone je client connect kun je op de server ook meteen omrekenen naar de lokale tijd voor de klant. Klanten hebben niks met UTC, die willen gewoon de tijd zien in hun wereld.

    kbmMW heeft een aantal functies om dat centraal voor je op te lossen. Ik zou even op moeten gaan zoeken hoe dat ook alweer heet. Als je servers overal kunnen staan en je clients ook, heb je die dingen nodig.

  3. #3
    Conversies zou ik op de server doen. Als je weet in welke timezone je client connect kun je op de server ook meteen omrekenen naar de lokale tijd voor de klant. Klanten hebben niks met UTC, die willen gewoon de tijd zien in hun wereld.
    Dat is denk ik wel een mooie oplossing, zeker als je er ook ander type clients aan hangt. Het is mijn alleen niet duidelijk hoe ik de timezone van de client bij de server krijg in combinatie met een query service! Bij een custom service kan ik gewoon een argument meegeven, maar ik heb geen idee hoe dit bij een query service gaat.

    Op die manier hoef je niet steeds uit te zoeken wat op de betreffende datum de afwijking was.
    Is dit omdat het lastig is om het te converteren of uit performance oogpunt?

    Met kbmmw is het tegenwoordig erg makkelijk om van lokale tijd naar utc te gaan.

  4. #4
    Bij een custom service kan ik gewoon een argument meegeven, maar ik heb geen idee hoe dit bij een query service gaat.
    Ik zou dat denk ik onderdeel maken van het inlogproces, er van uit gaande dat je die een hebt. Als je dan een ID gebruikt in plaats van de credentials bij je volgende requests heb je toch de koppeling gelegd? Gaat niet werken als ze in het space lab overvliegen, maar dan heb je sowieso andere uitdagingen gok ik.

    Is dit omdat het lastig is om het te converteren of uit performance oogpunt?
    Vooral omdat het (denk ik) lastig is. Je zou daar dan precies moeten weten wat de afwijking was op een bepaalde datum. Mogelijk zitten die routines al wel gewoon in Delphi of kbmMW, nooit naar gezocht. Performance valt denk ik wel mee, converteren moet je toch maar je hebt dan wel voor elke conversie een extra zoekactie nodig.

    Met kbmmw is het tegenwoordig erg makkelijk om van lokale tijd naar utc te gaan.

  5. #5
    Ik zou dat denk ik onderdeel maken van het inlogproces, er van uit gaande dat je die een hebt.
    Bedoel je dat ik tijdens het inlog proces een globale memtable moet vullen met alle relevante data waaronder tijdzone en deze moet gebruiken vanuit de diverse kbmmw services?

  6. #6
    bijvoorbeeld.

    kbmmw heeft opties om alleen bij de eerste request username en pass mee te sturen. Je genereert vervolgens een uniek id voor toekomstige requests. Dat id moet je natuurlijk ergens koppelen aan de eerdere credentials, een memtable is dan een van de opties. Op die plek leg je dan ook dit soort info vast.

    Maar kbmmw heeft ook gewoon ingebouwde mechanismen om het hele timezone geneuzel voor je op te lossen. Kan alleen zo snel niet herinneren hoe het ook alweer heet.

  7. #7
    http://c4d.asuscomm.com/wordpress/20...es-3-datetime/ dit is een recente post.

    Er moet ook nog een automatishe zijn, maar die zie ik zo snel niet.

  8. #8
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    9,750
    Een tijd + een afwijking is niet genoeg om het terug te transformeren naar een lokale tijd. Je zal toch echt iets als tijdzone qualifier moeten opslaan. (of theoretisch plaats, maar dan heb je een NOG grotere database nodig)

    (voorbeeld: Afrikaanse landen hebben vaak tijdzones in dezelfde als in Europa (+0 ..+3), maar zonder dat de zomer/wintertijd er is. Dus wat betekent UTC +0100?

  9. #9
    Marco je slaat de actuele afwijking op t.o.v. UTC in de betreffende tijdzone. Bij ons zou dat in de zomer dus +2 en in de winter +1. Iso 8601 definieert het ook zo.

  10. #10
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    9,750
    Nevermind, gisteren was blijkbaar te laat. Ja, je kan de tijdzone niet bepalen, maar locale tijd blijft natuurlijk een simpele aftrekking
    Last edited by marcov; 11-Jun-18 at 10:51.

  11. #11
    Benno, begrijp ik dat je een gebruikersnaam koppelt aan een tijdzone?
    Wat nu als ik voor het werk voor een internationaal bedrijf elders aan het werk ben?

  12. #12
    Dat is volgens mij dezelfde link als die van mij...

    Maar kbmmw heeft ook gewoon ingebouwde mechanismen om het hele timezone geneuzel voor je op te lossen. Kan alleen zo snel niet herinneren hoe het ook alweer heet.
    Ik post het wel even op de kbmmw nieuwsgroep

    Intussen heb ik redelijk wat gelezen over tijdzones i.c.m. databases en ik ben de suggestie van Marcov meerdere keren tegen gekomen. Ik snap alleen nog steeds niet wat voor zin het heeft. Als je naar meerdere tijdzones moet kunnen converteren heeft het geen zin om bijvoorbeeld alleen de afwijking van UTC voor Nederland op te slaan. Als je alleen één tijdzone gebruikt, dan hoef je het niet in UTC op te slaan. Mis ik iets?

  13. #13
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    9,750
    Als je van een datum-UTCtijd+tijddiff hebt: zeg mm-dd-jj hh:nn:ss +0200

    Dat heb je daar de absolute tijd (UTC), en verschil met lokale tijd op dat moment.

    Als die tijd hard aan iets met een plaats (gebruiker, bedrijf) is gekoppeld, dan kan je in dialogen voor die entiteiten ervoor kiezen een en ander weer te geven als een locale tijd. Of beslissingen dag/nacht etc erop te baseren.

    Problemen komen als b.v. de koppeling niet echt hard is (b.v. wel aan een bedrijf, maar bedrijf heeft vestigingen in meerdere tijdzones),

    of

    als je tijden die uit het systeem komen (15 januari 0:00 UTC verhogen we de prijzen) naar lokale tijd moet vertalen in de GUI. Die info heb je dan niet.

    Als een gebruiker echter b.v. tijdzone in zijn settings of profiel heeft (geseed met een default op b.v. IP), dan kan je met UTC voor die gebruiker echter weer wel locale tijd laten zien (van UTC+diff naar locale tijd is peuleschil als je de tijdzone weet)

  14. #14
    @Marcov

    Begrijp nu denk ik wat je bedoeld, maar ik zie nog steeds eerlijk gezegd nog steeds het nut er niet van. Een datetime zonder dat er impliciet of expliciet een tijdzone aan vast zit is sowieso niet waardevol.

    Wat nu als ik voor het werk voor een internationaal bedrijf elders aan het werk ben?
    Ik denk je timezone settings veranderen?

    @Benno

    Kim gaat voor de clientside oplossing voor het converteren, server alleen UTC. Valt natuurlijk ook wel wat voor te zeggen.

  15. #15
    Benno, begrijp ik dat je een gebruikersnaam koppelt aan een tijdzone?
    Nee. Aan een actueel inlog moment en het tijdelijke ID voor die sessie.
    Wat nu als ik voor het werk voor een internationaal bedrijf elders aan het werk ben?
    Dat is nog steeds geen probleem tenzij je in een vliegtuig over een timezone gaat terwijl je ingelogd bent. Die businesscase ondervang je hier niet mee.

Page 1 of 2 1 2 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •