Filter auf Datum

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.

BBCode ist eingeschaltet
[img] ist eingeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Ansicht erweitern Die letzten Beiträge des Themas: Filter auf Datum

Re: Filter auf Datum

von semko » 19 Okt 2015, 08:11

Super! Jetzt klappt es wie gewollt. Nochmal ganz heißen Dank!

Re: Filter auf Datum

von Sheldon2012 » 18 Okt 2015, 20:55

Das ist wohl, was Du meinst.

Code: Alles auswählen

    import devplugin.beanshell.BeanShellProgramFilterIf;
    import devplugin.Program;
    import devplugin.ProgramFieldType;
    import java.util.Calendar;

    accept(Program p) {

        boolean result = false;	
	
        Calendar programStart = Calendar.getInstance();   
        programStart.set(p.getDate().getYear(), p.getDate().getMonth()-1, p.getDate().getDayOfMonth(), p.getHours(), p.getMinutes());
        long programStartTime = programStart.getTimeInMillis();
      
        long hour = 60*60*1000;
        long day = 24*hour;
        long gmtOffset = 1 * hour;

        long currentDay = 0;	
      		
        long searchStartHour = 20;
        long searchEndHour = 5;
        long searchNumberOfDaysForward = 1;		
		
        long searchIntervalBegin = 0;
        long searchIntervalEnd = 0;                  

        for (int i = 0; i<=30; i++) {
          currentDay = System.currentTimeMillis() - (System.currentTimeMillis() % day) - gmtOffset + i * day;
          searchIntervalBegin = currentDay + searchStartHour * hour;  
          searchIntervalEnd = currentDay + searchNumberOfDaysForward * day + searchEndHour * hour; 
          
          result = ((searchIntervalBegin <= programStartTime) && (programStartTime <= searchIntervalEnd));

          if (result) {
             break;
          }
        }
 
        return result;
    }

    return (BeanShellProgramFilterIf) this;

Re: Filter auf Datum

von semko » 18 Okt 2015, 20:09

Sheldon2012, ganz herzlichen Dank für deine Mühe. Leider funktioniert dein Script nicht wie gewünscht. Es klappt für heute (Sonntag), gehe ich aber vor auf Montag, werden nur noch Sendungen zwischen 00 und 05 Uhr angezeigt, gehe ich weiter vor auf Dienstag, wird gar nichts mehr angezeigt.

Das Problem dürfte bei programStartTime liegen. Stattdessen würde ich als Ausgangspunkt den Zeitpunkt des gerade angezeigten Tages benötigen. Geht das auch?

Re: Filter auf Datum

von Sheldon2012 » 18 Okt 2015, 18:34

Wenn ich behaupte, dass es leicht sei, muß ich es ja auch beweisen. :)

Dieses Script zeigt Dir alle Sendungen die zwischen 20:00 Uhr heute und 5:00 Uhr morgen beginnen an (Dein Beispiel).
Du kannst es natürlich immer beliebig anpassen.

Vielleicht noch ein paar Erläuteruhgen:

long gmtOffset = 2 * hour; -> 2 Stunden Zeitverschiebung zur GMT
long searchStartHour = 20; -> Beginn 20 Uhr
long searchEndHour = 5; -> Ende 5 Uhr
long searchNumberOfDaysForward = 1; -> 1 Tag soll nach vorne gesprungen werden

Code: Alles auswählen

    import devplugin.beanshell.BeanShellProgramFilterIf;
    import devplugin.Program;
    import devplugin.ProgramFieldType;
    import java.util.Calendar;

    accept(Program p) {	
	
        Calendar programStart = Calendar.getInstance();   
        programStart.set(p.getDate().getYear(), p.getDate().getMonth()-1, p.getDate().getDayOfMonth(), p.getHours(), p.getMinutes());
        long programStartTime = programStart.getTimeInMillis();
      
        long hour = 60*60*1000;
        long day = 24*hour;
        long gmtOffset = 2 * hour;

        long currentDay = System.currentTimeMillis() - (System.currentTimeMillis() % day)  - gmtOffset;	
      		
        long searchStartHour = 20;
        long searchEndHour = 5;
        long searchNumberOfDaysForward = 1;		
		
        long searchIntervalBegin = currentDay + searchStartHour * hour;  
        long searchIntervalEnd = currentDay + searchNumberOfDaysForward * day + searchEndHour * hour;  
       
        return ((searchIntervalBegin <= programStartTime) && (programStartTime <= searchIntervalEnd));
    }

    return (BeanShellProgramFilterIf) this;

Re: Filter auf Datum

von semko » 18 Okt 2015, 17:45

Da ich von BeanShell-Programmierung Null Ahnung habe, bin da leider ziemlich aufgeschmissen :-(

Re: Filter auf Datum

von Sheldon2012 » 18 Okt 2015, 14:13

Mit einem BeanShell-Filter läßt sich das Problem aber leicht lösen.

Re: Filter auf Datum

von semko » 18 Okt 2015, 14:03

Sheldon2012 hat geschrieben: Aber vielleicht reicht Dir ja auch schon der relative Zeitfilter.
Leider nicht, weil die Relativität leider nur eindimensional ist. Ich kann darin zwar einstellen, dass sich die Zeitspanne auf den gerade angezeigten Tag beziehen soll, aber Zeitbasis ist auch dann die bei der Betrachtung gerade aktuelle Zeit (14 Uhr bleibt 14 Uhr, auch am nächsten etc. Tag).

Mein Problem wäre gelöst, wenn es die Einstellung "Angezeigten Tag für die Berechnung benutzen" auch beim Filtertyp "Datum" gäbe.

Re: Filter auf Datum

von Sheldon2012 » 17 Okt 2015, 20:41

Das läuft wohl auf eine BeanShell-Lösung hinaus. Damit geht es auf jeden Fall.
Aber vielleicht reicht Dir ja auch schon der relative Zeitfilter.

Re: Filter auf Datum

von semko » 17 Okt 2015, 16:57

ds10 hat geschrieben:Filterkomponenten können als Plugin nachinstalliert werden, wie z.B. RelativeZeitFilterKomponente.
Danke, den schaue ich mir mal an.

Re: Filter auf Datum

von semko » 17 Okt 2015, 16:53

Sheldon2012 hat geschrieben: was willst Du denn eigentlich erreichen?
Zum Beispiel will ich mir eine Sendungsliste der Filme am angezeigten Tag zwischen 20:00 Uhr und 05:00 Uhr am folgenden Tag anzeigen lassen.
Für das aktuelle Datum habe ich bereits einen gut funktionierenden Filter, der aber den Nachteil hat, dass er nur "heute" funktioniert, also nicht beim tageweise vorblättern.

Re: Filter auf Datum

von ds10 » 17 Okt 2015, 11:39

Ein Datumsfilter der auf dem angezeigten Tag arbeitet, scheint mir aber gar kein Datumsfilter zu sein, sondern ein Zeitfilter. Zeitfilter werden bereits mitgeliefert und weitere Filterkomponenten können als Plugin nachinstalliert werden, wie z.B. RelativeZeitFilterKomponente.

Re: Filter auf Datum

von Sheldon2012 » 16 Okt 2015, 18:01

Hi,

was willst Du denn eigentlich erreichen?

Gruß

Sheldon

Filter auf Datum

von semko » 16 Okt 2015, 17:45

Die Filterkomponente 'Datum' geht anscheinend vom aktuellen (PC-)Datum aus. In der Programmtabelle kann ich ja tageweise vorblättern und mir Programme in der nahen Zukunft anschauen. Gibt es eine Möglichkeit, Datumsfilter zu generieren, die sich auf den gerade angezeigten Tag beziehen? Wäre da etwas mit Bean möglich und wie müsste das aussehen?

Nach oben