2016-03-24 21 views
1

我想在每年年底設置一個倒數計時器,而不必更新年份值。在JavaScript中,要獲得倒計時日期,它將是:Android/Java:每年不得不更新的年份countodwn

var date = new Date(); 
var deadline = ' December 31 ' + date.getFullYear(); 
var t = Date.parse(deadline) - Date.parse(new Date()); 

我該如何在java中實現這個功能? (是的,我知道Java和JavaScript是沒有關係的,我只是做它發生在JavaScript,但無法弄清楚對於Java,剛開始學習java ....)

代碼:

 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"); 

輸出:

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 

但它的5個小時的休息時間。它應該是6個小時,這表明1小時...

+0

看看在['日曆'](http://developer.android.com/reference/java/util/Calendar.html)類。 –

回答

0

你可以嘗試這樣的事情:

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"); 
    } 
} 

這將產品:

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

這個想法不是像2014年那樣放入年份價值,所以當年結束的時候,年度會更新到當前或明年。 –

+0

你必須把東西的價值。所以在這種情況下,您可以從系統時間獲取值並從該點開始計數。 –

+0

我更新了我收到的輕微錯誤的問題。 –