Seite 1 von 1

ECMAScript - slice-Befehl bzw. Substring

Verfasst: 19. Aug 2021 14:47
von WupperJunge
Hallo zusammen,

irgendwie stehe ich als Anfänger mal wieder auf dem Schlauch.

Ich nutze unter openHAB 3.1.0 ECMAScript, ECMA - 262 Edition 5.1 (application/javascript) und habe dort einen kleinen Ablauf geschrieben.

Ich möchte gern u.a. aus einem String heraus ein Substring isolieren.

Habe ich dabei einen Text z.B. 'xxx123456789abc' so kann man das sehr schön mit dem Befehl "slice" machen

Code: Alles auswählen

var logger = Java.type('org.slf4j.LoggerFactory').getLogger('org.openhab.rule.' + ctx.ruleUID);

var myInfo = 'xxx123456789'

logger.info(myInfo.slice(2, 7));
Das Ergebnis ist in diesem Fall "x1234". Soweit so richtig und gut.


Wie kann man aber aus einem DateTime-Item einen Substring herausbekommen?

Code: Alles auswählen

var myInfo = itemRegistry.getItem('Zeit').getState();

logger.info(myInfo);
Ergibt:

2021-08-19 14:29:06 MESZ

Aber:

Code: Alles auswählen

var myInfo = itemRegistry.getItem('Zeit').getState();

logger.info(myInfo.slice(2, 7));
ergibt leider:

TypeError: myInfo.slice is not a function in <eval> at line number xy

OK, das DateTime-Item ist offensichtlich kein reiner Text. Aber wie kann man daraus in einem ECMAScript einen Substring z.B. mit der reinen Uhrzeit isolieren? Oder wie kann man das DateTime-Item in einen REINEN Text umwandeln? Kann mir da jemand auf die Sprünge helfen?

Re: ECMAScript - slice-Befehl bzw. Substring

Verfasst: 19. Aug 2021 15:24
von WupperJunge
Sorry, hat sich erledigt. Bin durch Zufall drauf gekommen:

Code: Alles auswählen

var myInfo = itemRegistry.getItem('Zeit').getState();

var Teil = (myInfo.toString());

logger.info(Teil.slice(11, 16));
oder kürzer:

Code: Alles auswählen

var myInfo = itemRegistry.getItem('Zeit').getState().toString().slice(11, 16);
Ergibt "15:20"