剩余时间从当前时间至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);
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);
问题出在“long endBidTime =();” – 2014-10-31 21:40:19
@Tahakörkem我的答案在这里也是一个问题,虽然它可能会被代码中的其他问题隐藏。 – 2014-10-31 21:40:57
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");
}
}
“不工作”是什么意思?编译并运行此代码时会发生什么? – 2014-10-31 21:38:01
long endBidTime =();是错误的代码,日食错误 – 2014-10-31 21:38:53
确切的错误是什么?你在这行代码中想做什么? – 2014-10-31 21:40:17