Calender und Winterzeit Fehler

Begonnen von sky64, 28 Oktober 2013, 07:12:31

Vorheriges Thema - Nächstes Thema

Dietmar63

@ Boris:

ich habe den Algorithmus nochmals auf Herz und Nieren geprüft, und bin noch zu folgender Verbesserung gekommen:


sub DSTOffset($$) {
  my ($t1,$t2)= @_;

  my @lt1 = localtime($t1);
  my @lt2 = localtime($t2);

  # wenn t2 in der ersten Stunde der dst liegt darf nicht gleich 3600 Sekunden abgezogen werden.
  # dstEin ist immer am letzten Sonntag im März.
  my $dstEin = timelocal_nocheck(0,0,2,31,2,$lt2[5]);    # 31. Maerz aktuelles Jahr
  my @aNow = localtime($dstEin);
  $dstEin += -$lt2[6]*24*3600;                           # letzen Maerzsonntag ermittlen.

  my $offset = $t2 - $dstEin + 1;                        # $secsSinceDstEin
     $offset = 3600  if ($offset >3600);                 # maximal 3600 Sekunden
     $offset *=  ($lt1[8] - $lt2[8]);                    # nur wenn Wechsel der dst
  return $offset;
}


Wenn kurz nach dem Beginn der dst das offset nach der alten Formel berechnet wird, wird eine Stunde abgezogen. Das ist aus meiner Sicht zu viel. Es darf in der ersten Stunde nach Beginn der dst nur der Anteil der vergangenen Stunde abgezogen werden.


Dann kommen folgende Zeiten dabei heraus. Bei Eintritt der dst mappen die Zeiten zwischen 2 und 3 Uhr in der Nacht auf 1:59:59. Was haltet ihr von der Verbesserung?


offset------------>0:0  -> 0  31.03.2013  00:00:00
offset------------>0:1  -> 0  31.03.2013  00:01:00
offset------------>0:2  -> 0  31.03.2013  00:02:00
offset------------>0:3  -> 0  31.03.2013  00:03:00
offset------------>0:4  -> 0  31.03.2013  00:04:00
offset------------>0:5  -> 0  31.03.2013  00:05:00
offset------------>0:6  -> 0  31.03.2013  00:06:00
offset------------>0:7  -> 0  31.03.2013  00:07:00
offset------------>0:8  -> 0  31.03.2013  00:08:00
offset------------>0:9  -> 0  31.03.2013  00:09:00
offset------------>0:10  -> 0  31.03.2013  00:10:00
offset------------>0:11  -> 0  31.03.2013  00:11:00
offset------------>0:12  -> 0  31.03.2013  00:12:00
offset------------>0:13  -> 0  31.03.2013  00:13:00
offset------------>0:14  -> 0  31.03.2013  00:14:00
offset------------>0:15  -> 0  31.03.2013  00:15:00
offset------------>0:16  -> 0  31.03.2013  00:16:00
offset------------>0:17  -> 0  31.03.2013  00:17:00
offset------------>0:18  -> 0  31.03.2013  00:18:00
offset------------>0:19  -> 0  31.03.2013  00:19:00
offset------------>0:20  -> 0  31.03.2013  00:20:00
offset------------>0:21  -> 0  31.03.2013  00:21:00
offset------------>0:22  -> 0  31.03.2013  00:22:00
offset------------>0:23  -> 0  31.03.2013  00:23:00
offset------------>0:24  -> 0  31.03.2013  00:24:00
offset------------>0:25  -> 0  31.03.2013  00:25:00
offset------------>0:26  -> 0  31.03.2013  00:26:00
offset------------>0:27  -> 0  31.03.2013  00:27:00
offset------------>0:28  -> 0  31.03.2013  00:28:00
offset------------>0:29  -> 0  31.03.2013  00:29:00
offset------------>0:30  -> 0  31.03.2013  00:30:00
offset------------>0:31  -> 0  31.03.2013  00:31:00
offset------------>0:32  -> 0  31.03.2013  00:32:00
offset------------>0:33  -> 0  31.03.2013  00:33:00
offset------------>0:34  -> 0  31.03.2013  00:34:00
offset------------>0:35  -> 0  31.03.2013  00:35:00
offset------------>0:36  -> 0  31.03.2013  00:36:00
offset------------>0:37  -> 0  31.03.2013  00:37:00
offset------------>0:38  -> 0  31.03.2013  00:38:00
offset------------>0:39  -> 0  31.03.2013  00:39:00
offset------------>0:40  -> 0  31.03.2013  00:40:00
offset------------>0:41  -> 0  31.03.2013  00:41:00
offset------------>0:42  -> 0  31.03.2013  00:42:00
offset------------>0:43  -> 0  31.03.2013  00:43:00
offset------------>0:44  -> 0  31.03.2013  00:44:00
offset------------>0:45  -> 0  31.03.2013  00:45:00
offset------------>0:46  -> 0  31.03.2013  00:46:00
offset------------>0:47  -> 0  31.03.2013  00:47:00
offset------------>0:48  -> 0  31.03.2013  00:48:00
offset------------>0:49  -> 0  31.03.2013  00:49:00
offset------------>0:50  -> 0  31.03.2013  00:50:00
offset------------>0:51  -> 0  31.03.2013  00:51:00
offset------------>0:52  -> 0  31.03.2013  00:52:00
offset------------>0:53  -> 0  31.03.2013  00:53:00
offset------------>0:54  -> 0  31.03.2013  00:54:00
offset------------>0:55  -> 0  31.03.2013  00:55:00
offset------------>0:56  -> 0  31.03.2013  00:56:00
offset------------>0:57  -> 0  31.03.2013  00:57:00
offset------------>0:58  -> 0  31.03.2013  00:58:00
offset------------>1:0  -> 0  31.03.2013  01:00:00
offset------------>1:1  -> 0  31.03.2013  01:01:00
offset------------>1:2  -> 0  31.03.2013  01:02:00
offset------------>1:3  -> 0  31.03.2013  01:03:00
offset------------>1:4  -> 0  31.03.2013  01:04:00
offset------------>1:5  -> 0  31.03.2013  01:05:00
offset------------>1:6  -> 0  31.03.2013  01:06:00
offset------------>1:7  -> 0  31.03.2013  01:07:00
offset------------>1:8  -> 0  31.03.2013  01:08:00
offset------------>1:9  -> 0  31.03.2013  01:09:00
offset------------>1:10  -> 0  31.03.2013  01:10:00
offset------------>1:11  -> 0  31.03.2013  01:11:00
offset------------>1:12  -> 0  31.03.2013  01:12:00
offset------------>1:13  -> 0  31.03.2013  01:13:00
offset------------>1:14  -> 0  31.03.2013  01:14:00
offset------------>1:15  -> 0  31.03.2013  01:15:00
offset------------>1:16  -> 0  31.03.2013  01:16:00
offset------------>1:17  -> 0  31.03.2013  01:17:00
offset------------>1:18  -> 0  31.03.2013  01:18:00
offset------------>1:19  -> 0  31.03.2013  01:19:00
offset------------>1:20  -> 0  31.03.2013  01:20:00
offset------------>1:21  -> 0  31.03.2013  01:21:00
offset------------>1:22  -> 0  31.03.2013  01:22:00
offset------------>1:23  -> 0  31.03.2013  01:23:00
offset------------>1:24  -> 0  31.03.2013  01:24:00
offset------------>1:25  -> 0  31.03.2013  01:25:00
offset------------>1:26  -> 0  31.03.2013  01:26:00
offset------------>1:27  -> 0  31.03.2013  01:27:00
offset------------>1:28  -> 0  31.03.2013  01:28:00
offset------------>1:29  -> 0  31.03.2013  01:29:00
offset------------>1:30  -> 0  31.03.2013  01:30:00
offset------------>1:31  -> 0  31.03.2013  01:31:00
offset------------>1:32  -> 0  31.03.2013  01:32:00
offset------------>1:33  -> 0  31.03.2013  01:33:00
offset------------>1:34  -> 0  31.03.2013  01:34:00
offset------------>1:35  -> 0  31.03.2013  01:35:00
offset------------>1:36  -> 0  31.03.2013  01:36:00
offset------------>1:37  -> 0  31.03.2013  01:37:00
offset------------>1:38  -> 0  31.03.2013  01:38:00
offset------------>1:39  -> 0  31.03.2013  01:39:00
offset------------>1:40  -> 0  31.03.2013  01:40:00
offset------------>1:41  -> 0  31.03.2013  01:41:00
offset------------>1:42  -> 0  31.03.2013  01:42:00
offset------------>1:43  -> 0  31.03.2013  01:43:00
offset------------>1:44  -> 0  31.03.2013  01:44:00
offset------------>1:45  -> 0  31.03.2013  01:45:00
offset------------>1:46  -> 0  31.03.2013  01:46:00
offset------------>1:47  -> 0  31.03.2013  01:47:00
offset------------>1:48  -> 0  31.03.2013  01:48:00
offset------------>1:49  -> 0  31.03.2013  01:49:00
offset------------>1:50  -> 0  31.03.2013  01:50:00
offset------------>1:51  -> 0  31.03.2013  01:51:00
offset------------>1:52  -> 0  31.03.2013  01:52:00
offset------------>1:53  -> 0  31.03.2013  01:53:00
offset------------>1:54  -> 0  31.03.2013  01:54:00
offset------------>1:55  -> 0  31.03.2013  01:55:00
offset------------>1:56  -> 0  31.03.2013  01:56:00
offset------------>1:57  -> 0  31.03.2013  01:57:00
offset------------>1:58  -> 0  31.03.2013  01:58:00
offset------------>2:0  -> -1  31.03.2013  01:59:59
offset------------>2:1  -> -61  31.03.2013  01:59:59
offset------------>2:2  -> -121  31.03.2013  01:59:59
offset------------>2:3  -> -181  31.03.2013  01:59:59
offset------------>2:4  -> -241  31.03.2013  01:59:59
offset------------>2:5  -> -301  31.03.2013  01:59:59
offset------------>2:6  -> -361  31.03.2013  01:59:59
offset------------>2:7  -> -421  31.03.2013  01:59:59
offset------------>2:8  -> -481  31.03.2013  01:59:59
offset------------>2:9  -> -541  31.03.2013  01:59:59
offset------------>2:10  -> -601  31.03.2013  01:59:59
offset------------>2:11  -> -661  31.03.2013  01:59:59
offset------------>2:12  -> -721  31.03.2013  01:59:59
offset------------>2:13  -> -781  31.03.2013  01:59:59
offset------------>2:14  -> -841  31.03.2013  01:59:59
offset------------>2:15  -> -901  31.03.2013  01:59:59
offset------------>2:16  -> -961  31.03.2013  01:59:59
offset------------>2:17  -> -1021  31.03.2013  01:59:59
offset------------>2:18  -> -1081  31.03.2013  01:59:59
offset------------>2:19  -> -1141  31.03.2013  01:59:59
offset------------>2:20  -> -1201  31.03.2013  01:59:59
offset------------>2:21  -> -1261  31.03.2013  01:59:59
offset------------>2:22  -> -1321  31.03.2013  01:59:59
offset------------>2:23  -> -1381  31.03.2013  01:59:59
offset------------>2:24  -> -1441  31.03.2013  01:59:59
offset------------>2:25  -> -1501  31.03.2013  01:59:59
offset------------>2:26  -> -1561  31.03.2013  01:59:59
offset------------>2:27  -> -1621  31.03.2013  01:59:59
offset------------>2:28  -> -1681  31.03.2013  01:59:59
offset------------>2:29  -> -1741  31.03.2013  01:59:59
offset------------>2:30  -> -1801  31.03.2013  01:59:59
offset------------>2:31  -> -1861  31.03.2013  01:59:59
offset------------>2:32  -> -1921  31.03.2013  01:59:59
offset------------>2:33  -> -1981  31.03.2013  01:59:59
offset------------>2:34  -> -2041  31.03.2013  01:59:59
offset------------>2:35  -> -2101  31.03.2013  01:59:59
offset------------>2:36  -> -2161  31.03.2013  01:59:59
offset------------>2:37  -> -2221  31.03.2013  01:59:59
offset------------>2:38  -> -2281  31.03.2013  01:59:59
offset------------>2:39  -> -2341  31.03.2013  01:59:59
offset------------>2:40  -> -2401  31.03.2013  01:59:59
offset------------>2:41  -> -2461  31.03.2013  01:59:59
offset------------>2:42  -> -2521  31.03.2013  01:59:59
offset------------>2:43  -> -2581  31.03.2013  01:59:59
offset------------>2:44  -> -2641  31.03.2013  01:59:59
offset------------>2:45  -> -2701  31.03.2013  01:59:59
offset------------>2:46  -> -2761  31.03.2013  01:59:59
offset------------>2:47  -> -2821  31.03.2013  01:59:59
offset------------>2:48  -> -2881  31.03.2013  01:59:59
offset------------>2:49  -> -2941  31.03.2013  01:59:59
offset------------>2:50  -> -3001  31.03.2013  01:59:59
offset------------>2:51  -> -3061  31.03.2013  01:59:59
offset------------>2:52  -> -3121  31.03.2013  01:59:59
offset------------>2:53  -> -3181  31.03.2013  01:59:59
offset------------>2:54  -> -3241  31.03.2013  01:59:59
offset------------>2:55  -> -3301  31.03.2013  01:59:59
offset------------>2:56  -> -3361  31.03.2013  01:59:59
offset------------>2:57  -> -3421  31.03.2013  01:59:59
offset------------>2:58  -> -3481  31.03.2013  01:59:59
offset------------>3:0  -> -3600  31.03.2013  03:00:00
offset------------>3:1  -> -3600  31.03.2013  03:01:00
offset------------>3:2  -> -3600  31.03.2013  03:02:00
offset------------>3:3  -> -3600  31.03.2013  03:03:00
offset------------>3:4  -> -3600  31.03.2013  03:04:00
offset------------>3:5  -> -3600  31.03.2013  03:05:00
offset------------>3:6  -> -3600  31.03.2013  03:06:00
offset------------>3:7  -> -3600  31.03.2013  03:07:00
offset------------>3:8  -> -3600  31.03.2013  03:08:00
offset------------>3:9  -> -3600  31.03.2013  03:09:00
offset------------>3:10  -> -3600  31.03.2013  03:10:00
offset------------>3:11  -> -3600  31.03.2013  03:11:00
offset------------>3:12  -> -3600  31.03.2013  03:12:00
offset------------>3:13  -> -3600  31.03.2013  03:13:00
offset------------>3:14  -> -3600  31.03.2013  03:14:00
offset------------>3:15  -> -3600  31.03.2013  03:15:00
offset------------>3:16  -> -3600  31.03.2013  03:16:00
offset------------>3:17  -> -3600  31.03.2013  03:17:00
offset------------>3:18  -> -3600  31.03.2013  03:18:00
offset------------>3:19  -> -3600  31.03.2013  03:19:00
offset------------>3:20  -> -3600  31.03.2013  03:20:00
offset------------>3:21  -> -3600  31.03.2013  03:21:00
offset------------>3:22  -> -3600  31.03.2013  03:22:00
offset------------>3:23  -> -3600  31.03.2013  03:23:00
offset------------>3:24  -> -3600  31.03.2013  03:24:00
offset------------>3:25  -> -3600  31.03.2013  03:25:00
offset------------>3:26  -> -3600  31.03.2013  03:26:00
offset------------>3:27  -> -3600  31.03.2013  03:27:00
offset------------>3:28  -> -3600  31.03.2013  03:28:00
offset------------>3:29  -> -3600  31.03.2013  03:29:00
offset------------>3:30  -> -3600  31.03.2013  03:30:00
offset------------>3:31  -> -3600  31.03.2013  03:31:00
offset------------>3:32  -> -3600  31.03.2013  03:32:00
offset------------>3:33  -> -3600  31.03.2013  03:33:00
offset------------>3:34  -> -3600  31.03.2013  03:34:00
offset------------>3:35  -> -3600  31.03.2013  03:35:00
offset------------>3:36  -> -3600  31.03.2013  03:36:00
offset------------>3:37  -> -3600  31.03.2013  03:37:00
offset------------>3:38  -> -3600  31.03.2013  03:38:00
offset------------>3:39  -> -3600  31.03.2013  03:39:00
offset------------>3:40  -> -3600  31.03.2013  03:40:00
offset------------>3:41  -> -3600  31.03.2013  03:41:00
offset------------>3:42  -> -3600  31.03.2013  03:42:00
offset------------>3:43  -> -3600  31.03.2013  03:43:00
offset------------>3:44  -> -3600  31.03.2013  03:44:00
offset------------>3:45  -> -3600  31.03.2013  03:45:00
offset------------>3:46  -> -3600  31.03.2013  03:46:00
offset------------>3:47  -> -3600  31.03.2013  03:47:00
offset------------>3:48  -> -3600  31.03.2013  03:48:00
offset------------>3:49  -> -3600  31.03.2013  03:49:00
offset------------>3:50  -> -3600  31.03.2013  03:50:00
offset------------>3:51  -> -3600  31.03.2013  03:51:00
offset------------>3:52  -> -3600  31.03.2013  03:52:00
offset------------>3:53  -> -3600  31.03.2013  03:53:00
offset------------>3:54  -> -3600  31.03.2013  03:54:00
offset------------>3:55  -> -3600  31.03.2013  03:55:00
offset------------>3:56  -> -3600  31.03.2013  03:56:00
offset------------>3:57  -> -3600  31.03.2013  03:57:00
offset------------>3:58  -> -3600  31.03.2013  03:58:00

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm