2017-09-04 5 views
-3

Ich versuche den Zeitbereich von 8:00 Uhr morgens bis 20:00 Uhr abends und von 8:00 Uhr morgens bis 8:00 Uhr morgens zu erreichen. Ich versuche Zeitpläne zu bekommen es in der recyclerview von Firebase.Wie bekomme ich den Zeitbereich?

Dies ist der Code, den ich strukturiert habe.

Calendar c = Calendar.getInstance(); 
    hour = c.get(Calendar.HOUR_OF_DAY); 
    min = c.get(Calendar.MINUTE); 
    sec = c.get(Calendar.SECOND); 
    int ds = c.get(Calendar.AM_PM); 
    if(ds==0) 
     AM_PM="am"; 
    else 
     AM_PM="pm"; 

    Toast.makeText(getActivity(), ""+hour+":"+min+AM_PM, Toast.LENGTH_SHORT).show(); 

    if (hour >= 8 && AM_PM.matches("am") || hour >= 12 && AM_PM.matches("pm") || hour <= 7 && min <=59 && sec <=59 && AM_PM.matches("pm")){ 
     fill_with_data_shift1(); 
    }else if (hour >= 20 && AM_PM.matches("pm") || hour >= 00 && AM_PM.matches("am")){ 
     fill_with_data_shift2(); 
    } 
+0

Was ist der Fehler, den Sie bekommen? –

+0

Es gibt Zeiten, dass die Kodierung nicht erfüllt. –

+0

Es zeigt die Verschiebung an, auch wenn sie nicht dort sein soll. –

Antwort

1

Grundsätzlich sollte Ihr Code sein:

// between 8am and 8pm (not included) 
if (hour >= 8 && hour < 20) { 
    // Do something 
} else { // the rest of the time 
    // Do something else 
} 

Minuten, Sekunden und der ganze Rest ist nicht wichtig.

2

Mit der modernen Java Datum & Zeit API dies ganz natürlich kommt:

LocalTime currentTime = LocalTime.now(ZoneId.of("Asia/Manila")); 

    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("h:mma", Locale.ENGLISH); 
    String displayTime = currentTime.format(dtf).toLowerCase(); 
    Toast.makeText(getActivity(), displayTime, Toast.LENGTH_SHORT).show(); 

    if (currentTime.isBefore(LocalTime.of(8, 0)) 
      || ! currentTime.isBefore(LocalTime.of(20, 0))) { // not-before means on or after 
     fill_with_data_shift2(); 
    } else { 
     fill_with_data_shift1(); 
    } 

Da die lokale Zeit immer eine Zeitzone feinfühlige Bedienung, zweimal überlegen, über die Zeitzone passieren zu LocalTime.now(). Wenn Sie die Zeitzoneneinstellung des Geräts verwenden möchten, übergeben Sie ZoneId.systemDefault().

Für Android erhalten Sie die moderne API in ThreeTenABP, siehe this question: How to use ThreeTenABP in Android Project.