2014-10-31 76 views
0

我想學習從當前時間剩餘時間18.30剩餘時間從當前時間至18:30

我的代碼無法正常工作:

long currentTime = System.currentTimeMillis();  
long endTime = 18:30; 
long remaining = endTime - currentTime; 
long hours = remaining/3600000; 
long mins = remaining/60000 % 60; 
long seconds = remaining/1000 % 60; 
String remainingText = String.format("%02d:%02d:%02d", hours,mins,seconds); 
+0

「不工作」是什麼意思?編譯並運行此代碼時會發生什麼? – 2014-10-31 21:38:01

+0

long endBidTime =();是錯誤的代碼,日食錯誤 – 2014-10-31 21:38:53

+0

確切的錯誤是什麼?你在這行代碼中想做什麼? – 2014-10-31 21:40:17

回答

1
long endBidTime =(); 

如你所知,這會導致編譯器錯誤。從評論中,您似乎希望將其設置爲當天18:30。一種解決方案是使用Date對象。您首先需要創建一個Date對象並將其時間設置爲18:30。有關如何執行此操作的詳細信息,請參見the javadocs for the Date class。您還需要使用Date.currentTimeMillis()才能獲得endBidTime的正確值。

你在你的代碼的另一個問題:

String remainingText = "%02d:%02d:%02d".format(hours,mins,seconds); 

這是不正確,可能給其他編譯器錯誤。請注意,format()方法是static。儘管Java允許我們用實例變量調用static方法,但我們強烈建議不要這樣做。相反,你應該使用類名。此外,格式字符串是format()預期的第一個參數。這意味着你應該做到以下幾點:

String remainingText = String.format("%02d:%02d:%02d", hours,mins,seconds); 
+0

問題出在「long endBidTime =();」 – 2014-10-31 21:40:19

+0

@Tahakörkem我的答案在這裏也是一個問題,雖然它可能會被代碼中的其他問題隱藏。 – 2014-10-31 21:40:57

+0

long endBidTime =() 在這段代碼中,沒有時間(18:30)。我如何在代碼中添加時間? – 2014-10-31 21:43:15

1

的currentTimeMillis()返回的差異,以毫秒爲單位,當前時間和午夜,1970年1月1日,UTC之間。請參閱here
如果你想找到剩下的時間直到今天18:30。你必須先在今天18:30找到以毫秒爲單位的時間(然後找到差異),這裏是我的代碼:

import java.util.Calendar; 
import java.util.Date; 
import java.util.GregorianCalendar; 
import static java.util.concurrent.TimeUnit.*; 

public class timetill1830 { 
    public static void main(String[] args) { 
    int hr = 18, min = 30, sec = 0; 
    Calendar calendar = Calendar.getInstance(); 
    //Now set the time for today 18:30 
    Calendar cal = new GregorianCalendar(calendar.get(Calendar.YEAR), 
      calendar.get(Calendar.MONTH), 
      calendar.get(Calendar.DAY_OF_MONTH), hr, min, sec); 
    System.out.println(cal.getTimeInMillis()); 
    System.out.println(System.currentTimeMillis()); 
    // Now Print time left till 18:30 
    System.out.println("Time in millsec. till 18:30 = " 
      + (cal.getTimeInMillis() - System.currentTimeMillis())); 
    formattedTimeLeft(cal.getTimeInMillis() - System.currentTimeMillis()); 

} 
private static void formattedTimeLeft(long millis) { 

    int hrs = (int) (MILLISECONDS.toHours(millis) % 24); 
    int min = (int) (MILLISECONDS.toMinutes(millis) % 60); 
    int sec = (int) (MILLISECONDS.toSeconds(millis) % 60); 
    //int mls = (int) (millis % 1000); 
    System.out.println("Time left "+hrs+" hours "+min+" minutes "+sec+" seconds"); 
} 
}