2016-01-11 3 views
1

Я не понимаю, что я делаю неправильно, мне что-то не хватает.joda PeriodFormatter prints null

private PeriodFormatter fmt = new PeriodFormatterBuilder() 
      .printZeroNever() 
      .appendHours() 
      .appendSeparator(":") 
      .minimumPrintedDigits(2) 
      .appendMinutes() 
      .appendSeparator(":") 
      .minimumPrintedDigits(2) 
      .appendSeconds() 
      .toFormatter(); 

, а затем

Period period = new Period(DateTime.now().getMillis()-startDate.getMillis(), PeriodType.millis()); 

Log.i("date", "fmt.print(period): " + fmt.print(period)); 
Log.i("date", "period.toString() : " + period.toString()); 
Log.i("date", "DateTime.now().getMillis()-startDate.getMillis() : " + (DateTime.now().getMillis()-startDate.getMillis())); 

мои журналы

fmt.print(period): 
period.toString() : PT12.166S 
DateTime.now().getMillis()-startDate.getMillis() : 12166 

Благодаря

--- EDIT

хорошо нашел, проблема была что specifiying " PeriodType.millis() "i n конструктор периода я получил период таким образом: 0мин 0 секунд 152150 мс Я не знаю, ясно ли я, но это была моя ошибка, я удалил этот аргумент, и теперь он работает как шарм.

Period period = new Period(startDate.getMillis(), DateTime.now().getMillis()); 
+0

Что вы хотите получить по результату? – gio

+0

Извините, я хочу «2:55» за 2 минуты 55 секунд, «1:05:01» за 1h 5min 1s –

ответ

0

Period класс имеет следующий застройщик:

Period(long startInstant, long endInstant, PeriodType type) 

Try Изменение:

 Period period = new Period(DateTime.now().getMillis()-startDate.getMillis(), PeriodType.millis()); 

к:

Period period = new Period(DateTime.now().getMillis(), startDate.getMillis(), PeriodType.millis()); 
+0

это тот же результат, вы правильно подумали, что я сделаю это так –

0

Это довольно странное поведение, что печать из пустой строки , но это потому, что вы просите его распечатать для типа миллисекунды, но вы не указали .appendMillis() в вашем определении форматера.

Это должно быть что-то вроде:

private PeriodFormatter fmt = new PeriodFormatterBuilder() 
     .printZeroAlways() 
     .appendHours() 
     .appendSeparator(":") 
     .minimumPrintedDigits(2) 
     .appendMinutes() 
     .appendSeparator(":") 
     .minimumPrintedDigits(2) 
     .appendSeconds() 
     .appendSeparator(".") 
     .appendMillis() 
     .toFormatter(); 
+0

Я не хочу для печати миллисов. Мой вопрос был отредактирован вчера с ответом. Спасибо за помощь. –

0

проблема заключалась в том, что с помощью specifiying «PeriodType.millis()» в конструкторе период я ​​получил период так: 0min 0 секунд 152150 мс не знаю если я ясно, но это была моя ошибка, я удалил этот аргумент, и теперь он работает как шарм.

Period period = new Period(startDate.getMillis(),DateTime.now().getMillis());