Zeitraum überprüfen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Zeitraum überprüfen

    Hi,

    ich teste mich gerade an einem Stück Code, welches einen Zeitraum kontrolliert. Es geht darum dass in einem bestimmten Zeitraum ein "Verbot" herrschen soll.
    Der Code soll das aktuelle Datum abfragen und mit einem "vorgegebenen" Zeitraum kontrollieren und wenn dieser Zeitraum aktuell ist, eine View ausgeben.

    Dass mit der View ist alles kein Problem, nur habe ich keinerlei Ahnung wie ich einen Zeitraum "abfragen" soll :(

    Hierbei geht es um bestimmte Zeiträume, z.B. 15.03. - 16.06.

    Ich gehe mal davon aus, dass ich zuerst mal wahrscheinlich einen Datepicker benötige, welcher erstmal das aktuelle Datum holt?
    Falls ja, wie gehe ich jetzt vor um den Zeitraum zu "vergleichen"?

    Würde mir jemand ein paar Denkanstöße verpassen? :)
  • Habe mich damit mal einwenig beschäftigt, allerdings bisher noch keinen Erfolg.
    Hapern tut es noch am vergleichen der Daten.

    Ich habe über *.set ein "StartDatum" und ein "EndDatum" für ein Produkt gesetzt.
    Zuerst einmal bleibe ich noch daran hängen, dass ich ein JAHR eingeben soll. Es gibt allerdings kein Jahr für diesen Zeitraum, also der Zeitraum ist jedes Jahr.

    Bei "null" bekomme ich einen Fehler, gebe ich einfach "0" ein, statt z.B. 2018, wird es zwar angenommen, ich gehe allerdings von einem Fehler aus, sobald verglichen werden soll.

    Nun brauche ich ja erstmal das aktuelle Datum (welches ich mir über Calendar.getInstance(); hole),
    und dieses soll verglichen werden ob es innerhalb des oben genannten Zeitraums liegt, oder nicht.

    Sowas wie "ist größer/kleiner/gleich" in einer "if" Abfrage funktioniert bisher so nicht. Zumindest nicht so, wie ich es mir vorgestellt habe.
  • Habe jetzt einwenig rumgespielt, und das richtige Ergebnis habe ich immer noch nicht.
    Aktuell spiele ich mit folgendem Codeschnipsel:

    Quellcode

    1. Calendar calendar = Calendar.getInstance();
    2. Calendar calendarStart = Calendar.getInstance();
    3. Calendar calendarEnd = Calendar.getInstance();
    4. try {
    5. SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
    6. String str1 = "01/01";
    7. Date date1 = formatter.parse(str1);
    8. calendarStart.setTime(date1);
    9. String str2 = "15/05";
    10. Date date2 = formatter.parse(str2);
    11. calendarEnd.setTime(date2);
    12. /* calendar.setTime(calendar.getTime()); */
    13. if (calendar.after(calendarStart) && calendar.before(calendarEnd) ){
    14. Log.d("KALENDER", "ES IST ZEIT!");
    15. } else {
    16. Log.d("KALENDER", "ES IST KEINE ZEIT");
    17. }
    18. if (date1.compareTo(date2) < 0) {
    19. Log.d("ANDROID", "DIES IST EIN TEST");
    20. /* System.out.println("date2 is Greater than my date1"); */
    21. }
    22. } catch (ParseException e1) {
    23. e1.printStackTrace();
    24. }
    25. }
    Alles anzeigen
    Wenn ich mir die Logs dann anschauen, finde ich zwar "DIES IST EIN TEST", aber keiner der anderen Texte :/
  • Ich komme der Sache näher. So wie es aussieht gibt es momentan "nur noch" ein Problem mit dem "aktuellen" Datum.

    Wenn ich folgendes eingebe

    Quellcode

    1. Calendar calendar = Calendar.getInstance();
    2. Calendar calendarStart = Calendar.getInstance();
    3. Calendar calendarEnd = Calendar.getInstance();
    4. try {
    5. SimpleDateFormat formatter = new SimpleDateFormat("dd-MM");
    6. Date dateAktuell = calendar.getTime();
    7. calendar.setTime(dateAktuell);
    8. String str1 = "01-01";
    9. Date dateStart = formatter.parse(str1);
    10. calendarStart.setTime(dateStart);
    11. String str2 = "15-05";
    12. Date dateEnd = formatter.parse(str2);
    13. calendarEnd.setTime(dateEnd);
    14. if (dateAktuell.compareTo(dateStart) > 0 && dateAktuell.compareTo(dateEnd) < 0 ) {
    15. Log.d("ANDROID", "ZEIT IST VORHANDEN");
    16. } else {
    17. Log.d("ANDROID", "KEINE ZEIT VORHANDEN");
    18. }
    19. } catch (ParseException e1) {
    20. e1.printStackTrace();
    21. }
    22. }
    Alles anzeigen


    bekomme ich "KEINE ZEIT VORHANDEN" ausgegeben. Gebe ich aber anstatt

    Quellcode

    1. Date dateAktuell = calendar.getTime();
    2. calendar.setTime(dateAktuell);

    dass hier ein

    Quellcode

    1. String str3 = "15-08";
    2. Date dateAktuell = formatter.parse(str3);
    3. calendarStart.setTime(dateAktuell);
    funktioniert es so wie es soll :) *juhuu* ^^

    Ich komme der Sache näher.
  • Aktuelles Datum wird nun wie folgt geholt

    Quellcode

    1. String stringCurrent = formatter.format(calendar.getTime());
    2. Date dateCurrent = formatter.parse(stringCurrent);
    3. calendar.setTime(dateCurrent);
    Jetzt klappt alles, Außer wenn das aktuelle Datum gleich ist mit dateEnd. Da kommt bereits die Zeile außerhalb der Zeit, hier müsste ich einen Tag mehr als das End-Datum angeben,
    sofern keine Andere Lösung?! :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Headhunter_1337 () aus folgendem Grund: EDIT: Jetzt würde ich gerne noch das Ergebnis an eine TextView in eine anderen Activity übergeben und dort anzeigen lassen, bzw das Ergebnis aus diesem Vergleich aus einer anderen Activity abfragen. :/

  • Mir ist beim ausprobieren gerade ein Fehler aufgefallen :(

    Und zwar wenn der Zeitraum (DateCurrent) z.B. zwischen Oktober (StartDatum) & Februar (EndDatum) (über Jahreswechsel) liegt.
    In diesem Fall wird nicht korrekt überprüft ob der das aktuelle Datum dazwischen liegt und dieser Part wird übersprungen bzw. die Methode die dann aufgerufen wird, wird eben nicht aufgerufen.

    Ansonsten läuft es soweit ganz gut bisher :) (*ich lerne, jippiii :D *)

    Jemand eine Idee? :(