NSDate [Solved]
Hallo iedereen,
Snap er niks van, ben met deze schijnbare bug al uren zoet mee. Hopelijk kan iemand mij helpen. Achtergrond Ben een kalender aan het maken voor de iPhone. Bij de meeste dagen en maanden ging het goed maar ik stuitte op een specifieke datum waarbij er iets mis gaat. Code om het na te bootsen Code:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; Code:
2009-10-25 01:59:59 +0200 Nu lijkt dit op het eerste gezicht nog geen probleem. Maar dit wordt wel een probleem als je je deze code bedenkt. Code:
NSDate *date = [dateFormatter dateFromString:@"25-10-2009 1:59:59"]; Code:
2009-10-25 01:59:59 +0200 Code:
2009-10-25 00:00:00 +0200 Mogelijke eigen oplossing Een mogelijke oplossing is door het huidige tijdsverschil GMT+0200 te bewaren en mocht er een verschil komen in tijdszones. Het verschil in uren in code erbij te tellen. Dus in het geval van +0100. 2 - 1 = 1 * 86400 = 86400 + de tijd. Maar dit is wel erg lelijk. Vraag Op de een of andere vage reden, beweegt NSDate zich door een timezone. De vraag is, heeft iemand een idee waarom dit gebeurd? Antwoord Op 25 oktober 2009 gaat de wintertijd in. Blijf het raar vinden dat ze dan de GMT aanpassen, laat de GMT dan hetzelfde en doe gewoon een uurtje terug. |
Timmeh zou je dit topic willen verwijderen?
|
edit
Ah ok, zomer/wintertijd probleem... Geen bug dus.. Dat ze de GMT aanpassen is op zich logisch, want dat is ook wat er feitelijk gebeurt. /edit Het lijkt op een bug in de timezone detectie in NSDateFormatter. Als je specifiek de timezone meegeeft werkt het wel goed: Code:
[dateFormatter setDateFormat:@"dd-MM-yyyy hh:mm:ss z"]; Workaround: vraag je huidige timezone op en voeg die toe als je een datum wilt omzetten van string naar NSDate. |
Citaat:
|
Heej Myrdhin,
Super bedankt dat je zo actief bent en wederom de moeite hebt genomen me te helpen. Waardeer ik enorm. Grz Mark |
Alle tijden zijn GMT +2. Het is nu 23:19. |