Seite 1 von 1

[gelöst] QDateTime für 29. März 2009

Verfasst: 28. April 2009 23:53
von PANGAEA
Hallo,

folgendes Problem bereitet mir erhebliche Kopfschmerzen

Code: Alles auswählen

  QDateTime dt = QDateTime( QDate( 2009, 3, 1 ) );

  dt.setDate( QDate( 2009, 3, 29 ) );
  dt.setTime( QTime( 0, 0, 0 ) );
  dt = dt.addSecs( 120*60 );

  QString OutputStr = dt.toString( "yyyy-MM-ddThh:mm" );

liefert nicht etwas 2009-03-29T02:00 sondern 2009-03-29T03:00 !!!
Für 119*60 wird noch richtig 2009-03-29T01:59 ausgegeben. Dieser Bug gilt dann für den ganzen 2009-03-29. Für 2009-03-30 liefert addSecs( 120*60 ) dann wieder die richtige Uhrzeit. Für 2008-03-29 liefert die gleiche Routine das richtige Ergebnis!

Mir scheint, ich bin da auf einen Bug in Qt 4.5.1 gestossen, was meint Ihr?

Genervte Grüße
Rainer

Verfasst: 29. April 2009 05:22
von chrislo1976
Moin!

Hm... 29.3.2009, da war doch was!?
Ach ja, an diesem Tag war die Zeitumstellung auf Sommerzeit! Und da wird doch von 2 Uhr auf 3 Uhr vorgestellt.

Das könnte doch dein Problem erklären!
Falls dem wirklich so ist und du diesen Umstand umgehen/berücksichtigen musst, gibt es Formeln mit denen man den Zeitpunkt der Zeitumstellung berechnen kann...

Gruß,
Christian

Verfasst: 29. April 2009 08:50
von pfid
Du hast jetzt nicht per Zufall genau den Zeitpunkt der Sommerzeitumstellung erwischt, oder? :lol:

Verfasst: 29. April 2009 13:33
von PANGAEA
Ja, da hat die Sommerzeit zugeschlagen.

So geht es:

Code: Alles auswählen

statt:
dt = dt.addSecs( i_Minute*60 );

nun besser so:
dt = dt.addSecs( i_Minute*60 ).toUTC();

Damit ist dann auch am Tag der Sommerzeitumstellung nach 120 Minuten nicht 3h sondern 2h.

Herzlich Dank für Eure Antworten
Rainer