2015-09-15 3 views
-4

Мне нужно получить дни, часы, минуты, секунды от текущего времени до 2038. У меня проблемы с выходом.Расчет дней, часов, минут, секунд, до 2038

public class Assignment1 { 
public static void main(String[] args) { 
long now = System.currentTimeMillis(); 
long y2k38 = (long) Math.pow(2, 31)*1000; 
long diffmillis = y2k38-now; 
long diffsec = (y2k38-now)/1000; 
long diffmin = diffsec/60; 
long diffhours = diffmin/60; 
long diffdays = diffhours/24; 

System.out.printf(
    "Y2K38 will occur in %d days.\n"+ 
    "Y2K38 will occur in %d hours.\n"+ 
    "Y2K38 will occur in %d minutes.\n"+ 
    "Y2K38 will occur in %d seconds.\n", 
    (diffdays%24),(diffhours%60), (diffmin%60),(diffsec%60)); 
} 

} 
+1

Это не сайт кода завершения. Какой код вы написали? Где вы застряли? – Michael

+0

Добро пожаловать в [stackoverflow] (http://stackoverflow.com/tour), пожалуйста, поделитесь тем, что вы пробовали. то, если вы застряли с какой-то точной проблемой, мы поможем вам. Перейдите по этим ссылкам, чтобы задать правильные вопросы (http://stackoverflow.com/help/how-to-ask), (http://stackoverflow.com//help/mcve) и (http://sscce.org) – Panther

+1

@connorp только что отправил его – sanclemeteguy

ответ

0

Ваша главная проблема в том, что ваш diffdays, diffhours, diffmin и diffsec все просто константы, которые на самом деле не взаимодействуют с текущей временной меткой, так y2k38-diffdays, y2k38-diffhours и y2k38-diffmin просто константами вычитая константы.

Вы, вероятно, захотите рассчитать количество миллисекунд до 2038 с помощью y2k38-now, а затем конвертировать до единиц, которые вы хотите оттуда.

Например, (y2k38-now)/1000 должен дать вам секунды до 2038, (y2k38-now)/(60*1000) должен дать вам минуты и т.д.

+0

благодарит за помощь! Должен ли я просто избавиться от разных дней, часов и т. Д. Вместе? – sanclemeteguy

+0

Вы могли бы, если у вас их не было. Кроме того, вы можете сохранить правильные значения различий и отобразить их. В любом случае, это не должно сильно влиять на функциональность кода. – Draco

+0

'public class Assignment1 { public static void main (String [] args) { long now = System.currentTimeMillis(); длинный y2k38 = (длинный) Math.pow (2, 31); System.out.printf ( "Y2K38 будет происходить в% F дней. \ П" + "Y2K38 будет происходить в% F часов. \ П" + "Y2K38 будет происходить в% F минут. \ П" + «Y2K38 будет происходить через% f секунд. \ N", (y2k38-now)/(1000 * 60 * 60 * 24), (y2k38-now)/(1000 * 60 * 60), (y2k38-now)/(1000 * 60), (y2k38-now)/(1000); } } ' – sanclemeteguy

Смежные вопросы