2016-03-24 2 views
1

Ich möchte einen Countdown-Timer bis zum Ende des Jahres einrichten, jedes Jahr, ohne den Jahreswert zu aktualisieren. In Javascript, um das Countdown-Datum zu erhalten, wäre es:Android/Java: Jährliches Countodwn mit ständig zu aktualisieren

Wie würde ich dies in Java implementieren? (Ja, ich weiß, Java und JavaScript sind nicht verwandt, ich habe es in Javascript passieren nur konnte es aber nicht für Java herauszufinden, gerade begonnen Java lernen ....)

Code:

 Calendar endOfYear = Calendar.getInstance(); 
     endOfYear.setTime(new Date(0)); /* reset */ 
     endOfYear.set(Calendar.DAY_OF_MONTH, 31); 
     endOfYear.set(Calendar.MONTH, 11); 
     endOfYear.set(Calendar.YEAR, Calendar.getInstance().get(Calendar.YEAR)); 

     Calendar today = Calendar.getInstance(); 
     double t = endOfYear.getTimeInMillis() - today.getTimeInMillis(); 

     double seconds = Math.floor((t/1000) % 60); 
     double minutes = Math.floor((t/1000/60) % 60); 
     double hours = Math.floor((t/(1000 * 60 * 60)) % 24); 
     double days = Math.floor(t/(1000 * 60 * 60 * 24)); 

     System.out.printf(days + " days, " + hours + " hours, " + minutes + " minutes and " + seconds + " seconds\n"); 

Ausgang:

03-24 18:16:05.177 1800-1800/com.ehlien.clevercash I/System.out: 282.0 days, 1.0 hours, 43.0 minutes and 54.0 seconds 
03-24 18:16:06.180 1800-1800/com.ehlien.clevercash I/System.out: 282.0 days, 1.0 hours, 43.0 minutes and 53.0 seconds 
03-24 18:16:07.182 1800-1800/com.ehlien.clevercash I/System.out: 282.0 days, 1.0 hours, 43.0 minutes and 52.0 seconds 
03-24 18:16:08.184 1800-1800/com.ehlien.clevercash I/System.out: 282.0 days, 1.0 hours, 43.0 minutes and 51.0 seconds 
03-24 18:16:09.187 1800-1800/com.ehlien.clevercash I/System.out: 282.0 days, 1.0 hours, 43.0 minutes and 50.0 seconds 
03-24 18:16:10.190 1800-1800/com.ehlien.clevercash I/System.out: 282.0 days, 1.0 hours, 43.0 minutes and 49.0 seconds 

Aber es ist ab 5 Stunden. Wo soll es 6 Stunden, zeigt es 1 Stunde ...

+0

Werfen Sie einen Blick auf die [ 'Kalender '] (http://developer.android.com/reference/java/util/Calendar.html) Klasse. –

Antwort

0

Sie können so etwas wie dies versuchen:

import java.util.Date; 
import java.util.Calendar; 

public class source { 
    public static void main(String[] args) { 
     Calendar endOfYear = Calendar.getInstance(); 
     endOfYear.setTime(new Date(0)); 
     endOfYear.set(Calendar.DAY_OF_MONTH, 31); 
     endOfYear.set(Calendar.MONTH, 11); 
     endOfYear.set(Calendar.YEAR, Calendar.getInstance().get(Calendar.YEAR)); 
     Calendar today = Calendar.getInstance(); 
     long t = endOfYear.getTimeInMillis() - today.getTimeInMillis(); 
     long seconds = (t/1000) % 60 ; 
     long minutes = (t/1000/60) % 60; 
     long hours = (t/(1000 * 60 * 60)) % 24 ; 
     long days = t/(1000 * 60 * 60 * 24); 
     System.out.printf(days + " days, " + hours + " hours, " + minutes + " minutes and " + seconds + " seconds\n"); 
    } 
} 

Dieser Wille Produkt:

280 days, 18 hours, 47 minutes and 41 seconds 
+0

Die Idee ist nicht, den Jahreswert wie 2014 anzugeben, also wenn das Jahr endet, aktualisiert sich das Jahr für das laufende oder nächste Jahr. –

+0

Sie müssen etwas in den Jahreswert eingeben. In diesem Fall können Sie den Systemzeitwert ermitteln und von diesem Zeitpunkt an zählen. –

+0

Ich habe die Frage mit dem kleinen Fehler, den ich bekomme, aktualisiert. –

Verwandte Themen