Вы можете использовать joda.time library, что позволяет вычитать время и получить результат за считанные секунды.
Вы должны создать два DateTime objects, используя конструктор, который позволяет вам отправить время с помощью int, например DateTime(int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute, DateTimeZone zone)
.
DateTime start = new DateTime(2013, 07, 14, 12, 45, 0, zone);
DateTime end = new DateTime(2013, 07, 14, 21, 0, 0, zone);
Тогда вы можете использовать эту функцию для yoda-time seconds to find the diference.
Seconds diff = Seconds.secondsBetween(start, end);
Edit: Чтобы показать код в использовании здесь пример в стандартном Java-класса с основным методом:
import org.joda.time.DateTime;
import org.joda.time.Seconds;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
DateTime start = new DateTime(2013, 07, 14, 12, 45, 0);
DateTime end = new DateTime(2013, 07, 14, 21, 0, 0);
Seconds diff = Seconds.secondsBetween(start, end);
System.out.println(diff.getSeconds());
}
}
Вот еще один пример не вычисляя секунд до следующего Рождества
public static void main(String[] args) {
DateTime start = new DateTime();
DateTime end;
if(start.getDayOfMonth()>24 && start.getMonthOfYear()==12)
{
end = new DateTime(start.getYear()+1, 12, 25, 0, 0, 0);
}
else
{
end = new DateTime(start.getYear(), 12, 25, 0, 0, 0);
}
Seconds diff = Seconds.secondsBetween(start, end);
System.out.println(diff.getSeconds());
}
Как уже отмечалось, вы можете сделать все это без времени в джоду. В этом случае вы просто используете java.util.Date, который имеет метод getTime(), который дает вам метку времени в миллисекундах с 1970 года. Если вы получаете временную метку из двух объектов java.util.Date (которые имеют тип long) и вычесть их, вы получаете миллисекунды между этими двумя датами. Делай это на 1000, чтобы получить секунды. Легко, но не как Объект Ориентирован как подход к джеду.
В приведенном выше случае, это было бы:
import java.util.Date;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Date start = new Date(2013, 07, 14, 12, 45, 0);
Date end = new Date(2013, 07, 14, 21, 0, 0);
System.out.println((end.getTime()-start.getTime())/1000);
}
}
Однако этот java.util.Date конструктор не является устаревшим и больше не должны быть использованы. Новый способ обработки Date - это вид анонимного and is documented here.
Возникает вопрос о том, как разработать приложение для Android и как найти diff. между временем ?. Редактировать вопрос добавить деталь –
Я не знаю, что должны делать первые строки, но последние четыре строки работают нормально, я попробовал их только сейчас. –