Время и календарь - PullRequest
       27

Время и календарь

2 голосов
/ 10 ноября 2011

Как добавить / вычесть два временных объекта. У меня есть два временных объекта (прибытие и отправление) в формате «гггг / ммм / дд чч: мм: сс». Мне нужно распечатать разницу между временем отправления и прибытия. Я создаю объявление времени ниже:

public String getTime() {
    Calendar currentDate = Calendar.getInstance();
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MMM/dd HH:mm:ss");
    return formatter.format(currentDate.getTime());
}

Можно ли получить время в мельницах и отформатировать его, когда мне нужно было распечатать?

Ответы [ 6 ]

4 голосов
/ 10 ноября 2011

Взгляните на библиотеку Joda Time .

Вы можете легко вычесть и добавить DateTime и легко узнать интервал:

// interval from start to end
DateTime start = new DateTime(2004, 12, 25, 0, 0, 0, 0);
DateTime end = new DateTime(2005, 1, 1, 0, 0, 0, 0);
Interval interval = new Interval(start, end);
2 голосов
/ 10 ноября 2011

как то так .....

public long getTimeDiff() throws Exception {
    String arrival = "2011/Nov/10 13:15:24";
    String departure = "2011/Jan/10 13:15:24";

    SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MMM/dd HH:mm:ss");

    java.util.Date date1 = formatter.parse(arrival);
    java.util.Date date2 = formatter.parse(departure);

    return date2.getTime() - date1.getTime();
}
1 голос
/ 10 ноября 2011

Преобразовать их в дату, а затем в длинную и вычесть, что даст разницу во времени в миллисекундах,

Date d1 = DateFormat.parse(time1);
Date d2 = DateFormat.parse(time2);
long diffInMilliSeconds = d1.getTime()-d2.getTime();
0 голосов
/ 10 ноября 2011

Да, начните с даты и используйте getTime() для преобразования в миллисекунды (или getTimeInMillis() для ваших календарей).Это дает вам длинные значения, которые вы можете вычесть.Это легкая часть.

Затем вы можете сами преобразовать эти миллисекунды в читаемый формат.Но, вероятно, имеет смысл использовать для этого упакованную библиотеку.

Некоторым людям нравится библиотека Joda для подобных вычислений дат.Я нахожу Commons Lang фантастическим.Он предоставляет DateUtils, что полезно, если вы обнаружите, что хотите выполнять вычисления, такие как округление или усечение дат до ближайшей минуты или часа и т. Д. Для вас наиболее полезной будет класс DurationFormatUtils, который дает вам такие функции, какformatDurationHMS для форматирования в хороший час: минута: второй дисплей и formatDurationWords для получения текста (необыкновенно!) Или других аналогичных функций для простого форматирования ваших миллисекунд в удобный для восприятия человеком формат.

0 голосов
/ 10 ноября 2011

Я бы преобразовал два объекта времени / даты в миллисекундах.Затем я бы вычел их (мы имеем дело с длинными).

Затем я создал бы объект Date из полученного длинного значения.После этого вы можете создать календарь с Calendar.setDate (Date).

С уважением!

0 голосов
/ 10 ноября 2011

Вы можете получить время в миллисекундах для обоих календарей, используя метод getTime. Когда вы можете преобразовать результат вычитания в нужные вам единицы измерения. Если вы собираетесь серьезно работать со временем / продолжительностью, взгляните на библиотеку Joda

Upd. Вы должны вызвать getTime дважды. Первый возвращаемый объект - это Date, когда вы вызываете getTime on Date, вы получаете длинное значение.

...