Разница в датах Java в миллисекундах - PullRequest
4 голосов
/ 30 октября 2011

Я написал следующий код, но я всегда просто получаю ...

4838399999 Секунд: 59 Минут: 59 Часов: 23 Дней: 7

Calendar xmas = Calendar.getInstance();
final Calendar now = Calendar.getInstance();

xmas.set(Calendar.YEAR, 2011);
xmas.set(Calendar.MONTH, Calendar.DECEMBER);
xmas.set(Calendar.DAY_OF_MONTH, 25);

long milliseconds1 = now.getTimeInMillis();
long milliseconds2 = xmas.getTimeInMillis();
long diff = milliseconds2 - milliseconds1;
System.out.println(diff);
diff = diff / 1000;

final long diffSeconds = diff % 60;
System.out.println("Seconds is : " + diffSeconds);
diff = diff / 60;

final long diffMinutes = diff % 60;
System.out.println("Minutes is : " + diffMinutes);
diff = diff / 60;

final long diffHours = diff % 60;
System.out.println("Hours is : " + diffHours);
diff = diff / 24;

final long diffDays = diff % 24;
System.out.println("Days is : " + diffDays);

Может ли кто-нибудь увидеть что-то не так с этой логикой, чтобы найти дни, часы, минуты и секунды до Рождества?

Ответы [ 2 ]

7 голосов
/ 30 октября 2011

Когда вы делаете:

diff = diff / 1000;

вы навсегда теряете остаток. Это должно быть что-то вроде:

long seconds = diff / 1000; // seconds is milliseconds / 1000
long milliseconds = diff % 1000; // remainder is milliseconds that are not composing seconds.
long minutes = seconds / 60;
seconds = seconds % 60;
long hours = minutes / 60;
minutes = minutes % 60;

Продолжается та же самая картина последних четырех.

0 голосов
/ 30 октября 2011

Эти две строки неверны:

final long diffHours = diff % 60

final long diffDays = diff % 24;

Кроме того, вы не устанавливаете часы / минуты / секунды / миллисекунды на xmas, поэтому он получает часы, минуты и секунды изТекущее время.Например, если вы запустите программу в 4:30:20 утра, то она даст вам время до 4:30:20 утра на Рождество.Возможно, вам нужно время до 00:00:00 на Рождество.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...