Autor Thema: [erledigt] dumme frage: wochentag für ein gegebenes datum anzeigen  (Gelesen 694 mal)

Offline the ratman

  • Hero Member
  • *****
  • Beiträge: 2736
  • cosmoprolet & intelligenzdiabetiker
hiho,

ich suche für eine readingsgroup als zusatz zu einem gegebene datum (das kommt als reading) den wochentag um ihn zusätzlich anzeigen zu können.

bspl.:
> im valueformat steht z.b. {'fc0_date' => '$VALUE<br>XXX', ... }
> $VALUE wäre in dem fall der inhalt eines readings - ein datum - im format 06.09.2021

wie kriege ich den, dem datum entsprechenden wochentag, also z.b. mo, di, mi, .., an die stelle XXX in das valueformat?

für hilfe sehr dankbar,
der immer wieder ahnungslose onkel ratti
« Letzte Änderung: 07 September 2021, 09:21:58 von the ratman »
→do↑p!dnʇs↓shit←

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 19693
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:dumme frage: wochentag für ein gegebenes datum anzeigen
« Antwort #1 am: 06 September 2021, 13:35:58 »
Hi,

ein Stück Perl sollte es bringen, ich weiß prinzipiell das es damit geht und habe auf die Schnelle diese ungeprüfte Stückchen:
my ($d,$m,$y) = split /\./, $VALUE;
   $m         = $m - 1;
   $y         = $y - 1900;
   my $sec       = timelocal(00,00,00, $d, $m, $y);
   my ($tmp, $tmp, $tmp, $tmp, $tmp, $tmp, $wday) = localtime($sec);

In $wday steht dann die Nummer für den Wochentag.
Das mit dem $tmp ist ev. kontra - Du kannst eigentlich die Ausgabe dann beliebig formatieren, siehe auch hier:
https://wiki.fhem.de/wiki/Zeitangaben,_rechnen_mit

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 3663
  • ... wer sät, der erntet ...
Antw:dumme frage: wochentag für ein gegebenes datum anzeigen
« Antwort #2 am: 06 September 2021, 14:27:55 »
Mal ganz kleinlaut nachgefragt

Weil ich mir auch darüber Gedanken gemacht habe und wirklich auf einen Lösungsansatz kam.

Wäre es soo falsch/umständlich gelöst, es so umzusetzen

Kommandozeile:

{my ($d,$m,$y) = split(/\./,$VALUE);;
$m=$m-1;;
return strftime("%A",localtime(timelocal('0','0','0',$d,$m,$y)))}

Warum ich beim Jahr nix abziehen muss hab ich selbst nicht verstanden.

edit:

Kommandozeile war so zu verstehen, $VALUE fest vergeben :
{my ($d,$m,$y) = split(/\./,"06.09.2021");;
$m=$m-1;;
return strftime("%A",localtime(timelocal('0','0','0',$d,$m,$y)))}
« Letzte Änderung: 06 September 2021, 21:09:25 von TomLee »

Offline the ratman

  • Hero Member
  • *****
  • Beiträge: 2736
  • cosmoprolet & intelligenzdiabetiker
Antw:dumme frage: wochentag für ein gegebenes datum anzeigen
« Antwort #3 am: 06 September 2021, 15:05:39 »
kann man mir da bitte ein beispiel geben, wie ich das ins valueformat eintragen kann?
→do↑p!dnʇs↓shit←

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 3663
  • ... wer sät, der erntet ...
Antw:dumme frage: wochentag für ein gegebenes datum anzeigen
« Antwort #4 am: 06 September 2021, 15:29:29 »
Keine Ahnung ob man  in der HASH-Version Perl verwenden kann, hab leichte Zweifel und es in der readingsGroup-Definition umzusetzen auch keinen Vorschlag, dazu hab ich bisher zu wenig mit gemacht.

Eine Möglichkeit wäre, wie ich es bisher verstanden habe, ein userReadings in den Devices zu definieren das den oben genannten Code ausführt / zurückgibt, oder ?


edit: nich richtig gelesen, statt xxx
{'<userreadingsname>' => '$VALUE<br>XXX', ... }
« Letzte Änderung: 06 September 2021, 15:56:10 von TomLee »

Offline the ratman

  • Hero Member
  • *****
  • Beiträge: 2736
  • cosmoprolet & intelligenzdiabetiker
Antw:dumme frage: wochentag für ein gegebenes datum anzeigen
« Antwort #5 am: 06 September 2021, 15:58:42 »
userreading hab ich auch schon gedacht - wären dann halt ein haufen userreadings in einem eh schon total unübersichtlichen haufen (proplanta), die ich mit einem direkten eintrag in der rg und der "umrechnung" von $value nur einmal machen müßte.

ich will mir keinesfalls irgendwelche perl-spielchen in der myutils oder so einbauen - als "nix-programmierer" ist das dann immer ein horror, wenn ich in 2 jahren dran denken muß, wo ich was wofür eingebastelt hab, ob ich das noch brauch, oder, oder, oder ...
ganz ehrlich gesagt, versteh ich sowieso nicht, warum es mit diesem angeblich so geilen perl nicht mal möglich ist, per "knopfdruck" bestimmte datums-formatierungen zu generieren - so als 08/15 user ohne ahnung kommt einem das extrem wie steinzeit vor.
sorry, mußt mal wieder dampf ablassen *g*
→do↑p!dnʇs↓shit←

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 3663
  • ... wer sät, der erntet ...
Antw:dumme frage: wochentag für ein gegebenes datum anzeigen
« Antwort #6 am: 06 September 2021, 16:29:51 »
Versuch mal so, wobei ich jetzt beim schreiben merke das $VALUE evtl. gar nicht existiert in den zusätzlichen geschweiften Klammern ? Hab ich nämlich nicht ausprobiert, aber man kann Perl verwenden wie hier gezeigt:

{'fc0_date' => '{my ($d,$m,$y) = split(/\./,$VALUE);$m=$m-1;return $VALUE."</br>".strftime("%A",localtime(timelocal("0","0","0",$d,$m,$y)))}', ...}

Offline Nobbynews

  • Full Member
  • ***
  • Beiträge: 355
Antw:dumme frage: wochentag für ein gegebenes datum anzeigen
« Antwort #7 am: 06 September 2021, 16:38:13 »
wie kriege ich den, dem datum entsprechenden wochentag, also z.b. mo, di, mi, .., an die stelle XXX in das valueformat?
Ich werfe mal das hier in die Waagschale:
https://www.straub.as/java/basic/Uwochentag.html

Offline the ratman

  • Hero Member
  • *****
  • Beiträge: 2736
  • cosmoprolet & intelligenzdiabetiker
Antw:dumme frage: wochentag für ein gegebenes datum anzeigen
« Antwort #8 am: 07 September 2021, 09:21:45 »
tomlee's code funzt auf anhieb.

vielen dank fürs hirnschmalz und die hilfe!
« Letzte Änderung: 07 September 2021, 11:13:20 von the ratman »
→do↑p!dnʇs↓shit←
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 3663
  • ... wer sät, der erntet ...
Antw:[erledigt] dumme frage: wochentag für ein gegebenes datum anzeigen
« Antwort #9 am: 07 September 2021, 18:11:09 »
Nix weltbewegendes und nicht wichtig, kam mir eben nur so in den Sinn:

$m=$m-1;
Könnte man noch ändern in

$m-=1;
macht das Ganze noch um zwei  ::) Zeichen kürzer.

 

decade-submarginal