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

时间:2014-10-31 21:36:31

标签: java android eclipse time

我想知道从当前时间到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);

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

currentTimeMillis()返回当前时间与UTC时间1970年1月1日午夜之间的差值(以毫秒为单位)。见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");
}
}