Ankündigung

Einklappen
Keine Ankündigung bisher.

vmDayOfYear geht nicht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    vmDayOfYear geht nicht

    stehe total auf dem SChlauch.
    Will den Skript vmDayofYear nutzen, dazu gebe ich hinein:

    phUTC = vmDayOfYear(05,07,25)

    heraus kommt immer im Format u08 der Wert 1...

    Fällt einem auf, was ich da falsch mache oder interpretiere?
    ich meine, das Datenformat U08 reicht ohnehin nicht aus (geht ja nur bis 255), aber das kann ich nicht einstellen, kommt ja automatisch so zurück.

    never fummel a running system...

    #2
    habe es gefunden
    Während u08-werte (Tag, Monat) einfach als Zahlenwert geschrieben werden können, muss bei u16-Werten das Format mit angegeben werden.
    Deshalb muss das richtig heissen vmDayOfYear(05,07,25u16)
    Unschön und auch aus dem Code nicht gleich erkennbar.....
    Vielleicht hilft es dem einen oder anderen weiter. Ich habe mir einen Wolf gesucht.
    Das hat übrigens auch zur Folge, dass die Rückgabe mit dem Wert u08 eben bei 255 aufhört und danach nicht mehr passt. So wird dann der 5.12.2025 der 171 Tag des Jahres, was sicher nicht stimmt

    und, ohne hier jetzt klugscheissen zu wollen, müsste der Code von Dr. Neumann denn nicht so lauten:

    // vmDayOfYear
    // Datum: 08.06.2021
    // Version: 1
    // Author: Dipl.-Inf. Franz Naumann (Enertex Bayern GmbH)
    :begin vmDayOfYear(uDay, uMonth, uYear)
    :info $Returns day of year 1...366 for a given date$ \\
    $Day (u08)$\\
    $Month (u08)$\\
    $Year Achtung, Zahl mit "u16" erweitern! (u16)$
    :var zDay@
    :var uDay@
    :var StartYear@
    :var zYearStart@
    :var uYearStart@
    :var uDeltaDays@
    StartYear@ = stringformat(uYear,0,3,4,4)
    if uYear == 0u16 then StartYear@ = split(utcconvert(utctime()),0u16,3u16) endif;

    zDay@ = StartYear@ +$-$c1+ stringformat(uMonth, 0, 3, 2, 2) +$-$c1+ stringformat(uDay, 0, 3, 2, 2) + $ 00:00:00$c32
    uDay@ = utc(zDay@)
    zYearStart@ = StartYear@ + $-01-01 00:00:00$c32
    uYearStart@ = utc(zYearStart@)
    uDeltaDays@ = convert((uDay@ - uYearStart@) / 86400000u64,0u16)+1u16
    :return uDeltaDays@
    :end​
    Zuletzt geändert von TRex; 31.01.2025, 17:04.
    never fummel a running system...

    Kommentar


      #3
      Danke für den Hinweis, wird in EibStudio 5.303 gefixt.

      Kommentar

      Lädt...
      X