Hallo zusammen,
ich komme leider absolut nicht weiter.
Ich möchte eine Zeit im Format HH:MM:SS erhalten, in der ich die Zeit bis zu einer definierten Endzeit errechne.
Die Endzeit liegt mir vor im Format
2022-08-30T09:24:03+00:00
Nun habe ich folgendes geschrieben:
MQTT2_waschmaschine_washer_completion_time:*
{
my $Endzeit_sec=time_str2num($EVENT);
my $timenow=time();
my $diff=$Endzeit_sec - $timenow;
my $diff_time=FmtTime($diff);
fhem ("set Waschmaschine_Restzeit $diff_time");
}
Insgesamt scheint das zu funktionieren, allerdings bekomme ich einen Wert heraus, der genau 1 Stunde zu hoch ist. Ich gehe von einer Sommerzeit-Problematik aus. Irgendwer eine idee?
Vielen Dank vorab!
Viele Grüße!
Hi,
das liegt an FmtTime
{ FmtTime(time()) }
liefert die aktuelle Uhrzeit richtig "local" formatiert
{ FmtTime(3600) }
liefert 2:00
Idee: {strftime("%H:%M",gmtime(3600))}
aber vielleicht gibt es bessere ;)
FmtTime in fhem.pl arbeitet mit localtime
sub
FmtTime($)
{
my @t = localtime(shift);
return sprintf("%02d:%02d:%02d", $t[2], $t[1], $t[0]);
}
Gruß Otto