19

Funktionen für Zeit, Datum, Zeitstempel, time, date, datetime

Hier sind viele Scripte zu obigen Themen, die ich entweder selbst geschrieben, oder gnadenlos dem Forum entwendet habe. Wenn ich es wußte, habe ich auch Autoren vermerkt. So etwas mache ich, um thematisch einen besseren Überblick zu haben.

Nun ist einige Zeit nichts Neues hinzugekommen und vielleicht kann es noch jemand gebrauchen, deswegen teile ich es hier. Es sind solche Dinge wie: alle Samstage eines Jahres, jeder 4. Mittwoch eines Jahres, Ostern etc., Schaltjahr, wann ist Umstellung Sommer-/Winterzeit, aufrunden, abrunden, Zeitabstände, Formatierungen, wann ist endlich Weihnachten. Mirko

18 Antworten

null
    • Josef_Koenig
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Danke für Deine Sammlung! Spart viel Arbeit und beim Durcharbeiten bekommt man selbst viele gute neue Ideen!

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Mirko  Habe mir erlaubt deine Datenbank ins englische Forum. mit Verweis auf Dich als Urheber, und Learn&Share hochzuladen.

    Gute Arbeit muss verbreitet werden und allen Ninox-Usern nutzen. 😉

    • Mike_Muller
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Mirko Ich bin begeistert und danke Dir ganz herzlich für Deine Mühe und die Bereitstellung hier im Forum.

    • alan_iselin
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Mirko

    Ich habe deine datei heruntergeladen aber ich weis nicht wie ich den script copiere nur für eine sache, ich sende 2 screenshots, 

    Gruss 

    Alan

      • mirko3
      • vor 1 Jahr
      • Gemeldet - anzeigen

      alan. iselin Hi, alan. Ganz am Ende des Scripts steht der Funktionsaufruf. Da muß dann der Eintrag Deiner zwei Datumfelder oder date(Jahr,Monat,Tag) - Einträge stattfinden. Mirko

      TimeInterval(datetime(DATUM1), datetime(DATUM2))
      
    • alan_iselin
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Mirko 

    Bitte Bitte um hilfe 

    das time interwal funktioniert nicht

    ich brauche eine lösung für beispiel: 22.02.2023 und 22.04.2023 als resultat 2 

    Besten Dank im voraus 

    Freundliche Grüsse

    Alan

    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hier mal ein eher kleines Update (in lila), wohl eher für die Liebhaber grenznützlicher Scripte. 

    Hinzugefügt und absteigend geordnet nach praktischem Nutzen:

    wie kann ich...

    1. die Terminlücken innerhalb eines Terminarrays finden?

    2. die einzelnen Wochentage aus week() oder yearweek()  berechnen?

    3. die UTC (coordinated universal time) als timestamp bestimmen?

    4. die Zeitzone im Format number() bestimmen?

    5. eine laufende Uhr mit Sekunden bekommen?

    6. einen Weihnachtsbaum mit passendem Datum scripten?

    7. einen Werbebanner eines beliebten Datenbankprogramms erstellen?

    Mirko

    • benlucas
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Sehr hilfreich, vielen Dank!

    • Maurice
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Vielen Dank, Mirko. Ich muss/kann noch viel lernen.

    • David Braun Gestalter HfG
    • Herr_Grun
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Ich schliesse mich an: Vielen Dank Mirko! Unglaublich!

    Darf ich davon ausgehen, dass es keine Funktion gibt, um die Zeitdifferenz zweier Datensätze ( per now() gesetzt) in Stunden und Minuten anzuzeigen?

      • mirko3
      • vor 10 Monaten
      • Gemeldet - anzeigen

       Hallo David. Doch, dass sollte gehen. Wenn ich Dich richtig verstanden haben, willst Du die timestamps der Erstellung zweier Datensätze in Stunden und Minuten angeben. Das sind auch nur normale Datum-Uhrzeit Angaben. In Ninox wird das mit 'Erstellt am' hinterlegt und kann so aufgerufen werden. Man braucht also kein extra Feld mit now(). In der Datei findest Du Scripte, die Dir das gewünschte Ergebnis bringen. Eine einfache Version ist folgende. Die Variablen enthalten die zwei zu vergleichenden Datensätze mit dem Zeitstempel der Erstellung. Darunter eine einfache Berechnung für den Zeitabstand. Mirko

      let ds1 := record(table,1).'Erstellt am';
      let ds2 := record(table,2).'Erstellt am';
      duration(appointment(ds1, ds2))
      
      • David Braun Gestalter HfG
      • Herr_Grun
      • vor 10 Monaten
      • Gemeldet - anzeigen

       Vielen Dank, Mirko!

      Funktioniert zum Teil, irgendwie aber eher nicht.

      Teilweise haben Eintrage kein 'Erstellt am' angezeigt, und wie immer geht es mir auch um die dynamische Auswahl zweier Datensätze, nämlich immer den vorangehenden. ( n, n+1).

      Es muss nicht mal in einer Schlaufe sein, weil ja ab dem 2. Datensatz eine Dauer existiert.

      Ich finde mich aber leider in der Doku so gar nicht zurecht, daher eiere ich herum.

      • mirko3
      • vor 10 Monaten
      • Gemeldet - anzeigen

      Das Script funktioniert, aber Deine Frage ist jetzt eine andere. Ein 'Erstellt am' ist bei jedem Datensatz vorhanden, das ist der ninoxinterne Zeitstempel. Hier mal noch ein "dynamisches Script", vielleicht kommt es dem näher was Du wirklich willst. Wenn es dann noch nicht so ist, wie Du es haben möchtest, mach doch bitte einen neuen Thread auf, denn dieser hat ja schon ein Thema. Mirko

      let me := this.number(Nr);
      let ds1 := last(((select table) order by number(Nr))[number(Nr) < me]).'Erstellt am';
      let ds2 := record(table,me).'Erstellt am';
      duration(appointment(ds1, number(ds2 - ds1)))
      
    • yellow_scissors
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Moin zusammen, ich hätte gerne einen "AllDay" Button neben dem Terminfeld, womit nach erfolgreicher Datumseingabe die Stunden auf 8:00 bis 16:00 gesetzt werden

    Hier erscheint leider 0:00 bis 0:00 als Uhrzeit

    let start1 := date(start(Termin));
    Termin := appointment(datetime(start1, 8), datetime(start1, 16))
    

    Was mache ich falsch?

      • mirko3
      • vor 10 Monaten
      • Gemeldet - anzeigen

      Gib die Zeiten entweder in Millisekunden ein (für 8:00 - 28800000) oder mit der Funktion time() (z. B. time(8,0)). Mirko

      • yellow_scissors
      • vor 10 Monaten
      • Gemeldet - anzeigen

      vielen dank, jetzt klappt's :)

    • UweG
    • vor 7 Monaten
    • Gemeldet - anzeigen

    Ich bin ein großer Fan dieser DB und gestehe sie auch als Standard in Fragen zur Datums-/Zeitverwendung in Skripten zu nutzen.
    So war sie mir auch behilflich, als an mich das Problem herangetragen wurde aus dem Jahr, der Kalenderwoche und dem Tagesindex das genaue Datum zu ermitteln.
    Die Berechnung gilt für Kalenderwochen, die an einem Montag beginnen.
    Ich habe dazu eine Funktion von Mirko genutzt und noch etwas Script darum gebaut.
    Falls jemand den seltenen Fall hat auch damit konfrontiert zu sein eine kleine Bsp-DB wie ich es gelöst habe.

    • NorbertSzpak
    • vor 4 Monaten
    • Gemeldet - anzeigen

    super! 🕖