So, wie versprochen, hier der besagte “Sekunden zu String”-Node:
[{"id":"1f80b30e.972aad","type":"function","namespace":"function","z":"cb80c51c.99d7b8","name":"","func":"// String Constants\n$strHour = \" Stunde\";\n$strHours = \" Stunden\";\n$strMinute = \" Minute\";\n$strMinutes = \" Minuten\";\n$strSecond = \" Sekunde\";\n$strSeconds = \" Sekunden\";\n$strElapsed = \"abgelaufen\";\n$strAnd = \", \";\n$strLastAnd = \" und \";\n$strSeperator = \":\";\n\n// Variables\n$outputString1 = \"\";\n$outputString2 = \"\";\n$hours = 0;\n$minutes = 0;\n$seconds = 0;\n\n// Select Input-Format\n//input = seconds\n//$seconds = $message['payload'];\n//input = milliseconds\n$seconds = $message['payload'] / 1000;\n\n// Calculation\nif ($seconds >= 3600)\n{\n $hours = floor($seconds/3600);\n $seconds = $seconds - $hours*3600;\n}\nelse\n{\n $hours = 0;\n}\n\nif ($seconds >= 60)\n{\n $minutes = floor($seconds/60);\n $seconds = $seconds - $minutes*60;\n}\nelse\n{\n $minutes = 0;\n}\n\n// Building String 1\nif($hours>0)\n{\n $outputString1 = $outputString1.$hours;\n if($hours==1)\n {\n $outputString1 = $outputString1.$strHour;\n }\n else\n {\n $outputString1 = $outputString1.$strHours;\n }\n}\n\nif($minutes>0)\n{\n if($hours>0)\n {\n if($seconds>0)\n {\n $outputString1 = $outputString1.$strAnd;\n }\n else\n {\n $outputString1 = $outputString1.$strLastAnd;\n }\n }\n $outputString1 = $outputString1.$minutes;\n if($minutes==1)\n {\n $outputString1 = $outputString1.$strMinute;\n }\n else\n {\n $outputString1 = $outputString1.$strMinutes;\n }\n}\nif($seconds>0)\n{\n if($hours>0 || $minutes>0)\n {\n $outputString1 = $outputString1.$strLastAnd;\n }\n $outputString1 = $outputString1.$seconds;\n if($seconds==1)\n {\n $outputString1 = $outputString1.$strSecond;\n }\n else\n {\n $outputString1 = $outputString1.$strSeconds;\n }\n}\n\nif ($hours==0 && $minutes==0 && $seconds==0)\n{\n $outputString1 = $strElapsed;\n}\n \n\n// Building String 2\nif($hours>0)\n{\n $outputString2 = $outputString2.$hours.$strSeperator;\n}\nif($minutes>0 || $hours>0)\n{\n if($minutes<10 && $hours>0)\n {\n $outputString2 = $outputString2.\"0\";\n }\n $outputString2 = $outputString2.$minutes.$strSeperator;\n}\nif($seconds<10 && ($hours>0 || $minutes>0))\n {\n $outputString2 = $outputString2.\"0\";\n }\n$outputString2 = $outputString2.$seconds;\n\n//Output\n$message['payload'] = $outputString1;\noutput(0,$message);\n$message['payload'] = $outputString2;\noutput(1,$message);","inputs":1,"outputs":2,"noerr":0,"x":880,"y":270,"wires":[[{"id":"5818e2a5.7e703c","port":0}],[{"id":"5818e2a5.7e703c","port":0}]]}]
Der Node hat 2 Ausgänge.
Der 1. gibt einen String im Klartext aus, wobei überflüssige Einheiten ausgelassen werden und ein natürlicher Aufbau eingehalten wird.
Z.B.:
1 Stunde, 15 Minuten und 3 Sekunden
,
2 Stunden und 1 Sekunde
,
3 Minuten und 1 Sekunde
oder
bei 0
Sekunden abgelaufen
.
Alle Wörter und Zeichen sind als Konstanten am Anfang des Quelltext hinterlegt, somit ist mit wenigen Änderungen auch die Anpassung an andere Sprachen möglich.
Der 2. Ausgang gibt einen String im Format Stunde:Minute:Sekunde
aus, wobei auch hier überflüssige Einheiten ausgelassen werden:
72
Sekunden geben also 1:12
und nicht 0:01:12
.
Auch der Separator :
ist am Anfang des Quelltextes definiert und kann geändert werden.
Falls Ihr Ideen, Fragen oder Anregungen habt, lasst es mich einfach wissen.
Gruß Andreas