剩余时间从当前时间至18:30

问题描述:

我想学习从当前时间剩余时间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

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

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