Попытка сделать небольшую программу обратного отсчета в Java.Java - Календарь/разница по дате - Найти разницу в секундах
Я работаю над поиском разницы между датой части приложения, и по какой-то причине я получаю только дни.
Мне нужны дни, часы, минуты и секунды. Я не уверен, почему мой расчет округляется до четного целого ... 163 в этом примере, а не 163.xx?
Вот мой код:
import java.util.Date;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class CalcData {
Calendar cal1;
Date today;
public CalcData() {
cal1 = new GregorianCalendar();
today = new GregorianCalendar().getTime();
}
public String calcDiff() {
cal1.set(2013, 6, 27, 7, 15, 0);
double theDays = calcDays(cal1.getTime(), today);
return "" + theDays;
}
public double calcDays(Date d1, Date d2) {
double theCalcDays = (double) ((d1.getTime() - d2.getTime())/(1000 * 60 * 60 * 24));
return theCalcDays;
}
}
Когда я запускаю это, как я уже сказал, я получаю результат: 163,0
Я бы подумать, если он использует миллисекунды, что это будет какая-то вид десятичной дроби. Я уверен, что это что-то простое, что мне не хватает, но просто не могу найти его!
Заранее благодарен!
Уверенный достаточно! Большое спасибо человеку. Рад, что это была простая ошибка. – cbaze19
Это не сработает, если обе даты взяты из разных зон сохранения дневного света. В таком случае разница во времени будет X дней-1 и 23 часа :) – Antoniossss
Действительно, в местах, где есть летнее время, есть один день в году, который составляет 23 часа, а один день - 25 часов. Однако внутри объекта date это значение в формате UTC. UTC имеет ТОЛЬКО 24 часа, и поэтому он работает. У вас всегда есть эта проблема, когда вы рассматриваете часовые пояса: двухчасовая телефонная конференция может начинаться и заканчиваться в тот же день в одном часовом поясе, и она может начинаться и заканчиваться в разные дни в другом часовом поясе. Они не согласны с количеством дней! Это не имеет никакого отношения к продолжительности, но вместо этого интерпретация времени в соответствии с этим часовым поясом. – AgilePro