2013-07-14 3 views
-5

** Я хочу создать приложение для Android, которое будет считать время между двумя определенными временами (например, с 12.45 до 21:00.) Как я могу это сделать? **Обратный отсчет между двумя определенными временами?

//////// ////////////////////////////////////////////////// ////////////////

Я попытался таким образом. Я думаю, что у меня есть неисправность

f` Integer year = null; 
    Integer monthOfYear = null; 
    Integer dayOfMonth = null; 
    Integer hourOfDay = null; 
    Integer minuteOfHour = null; 
    Integer secondOfMinute = null; 




     DateTime(year, monthOfYear, dayOfMonth, hourOfDay, minuteOfHour, secondOfMinute); 


     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); 
     mTextField.setText(diff.getSeconds());` 

как я могу это?

+1

Возникает вопрос о том, как разработать приложение для Android и как найти diff. между временем ?. Редактировать вопрос добавить деталь –

+0

Я не знаю, что должны делать первые строки, но последние четыре строки работают нормально, я попробовал их только сейчас. –

ответ

2

Вы можете использовать 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.

+0

Нет необходимости в внешних библиотеках, это можно сделать без них – BackSlash

+1

Это может быть, но yodatime просто намного приятнее. –

+0

Я пробовал это, но он не работал – Cracked

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