Формат журнала вызовов Android время вызова

#android #calllog

#Android #журнал вызовов

Вопрос:

Я собираю данные из журнала вызовов. Вот как я форматирую дату вызова на свой вкус:

 DateFormat datePattern = DateFormat.getDateInstance(DateFormat.FULL);  //Tuesday, October 18, 2011
Long datelong = Long.parseLong("1318950779497");
String date_str = datePattern.format(datelong);
Date date = new Date(date_str);
formatter = new SimpleDateFormat("d/M/yyyy");  //18/10/2011
newdateformatted = formatter.format(date);
  

Это время вызова:

 DateFormat timePattern = DateFormat.getTimeInstance(DateFormat.LONG); //12:40:32 PM GMT 00:00
  

Как я могу это отформатировать? Мне нужен 24-часовой временной код.

Комментарии:

1. Я не понимаю вашего вопроса. Похоже, вы уже делаете то, что хотите.

2. Я получаю такие данные, как 3:12:59 по Гринвичу 00:00. Я хочу только 15:12:59

Ответ №1:

Просто создайте другой форматировщик на время:

 SimpleDateFormat timeFormater = new SimpleDateFormat("HH:mm:ss");
timeString = timeFormater.format(date);
  

Обратите внимание на чувствительность к регистру HH:mm:ss . Это то HH , что дает вам 24-часовой формат времени.

Следующий небольшой тестовый код работает для меня:

 import java.text.SimpleDateFormat;
import java.util.Date;
public class Test{


  public static void main(String args[]){
    Date today = new Date();
    SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
    String formated = formatter.format(today);
    System.out.println(formated);
  }
}
  

Он выводит:

 15:57:11
  

Комментарии:

1. это timeFormater.format(date_str), но это дает мне исключение IllegalArgumentException в этой строке.

2. Ой, извините. Я отредактировал и исправил это. Вы должны предоставить ему фактический объект date, а не строку.

3. ОК. Теперь он дает мне 00:00:00 для всех дат. Если изменить формат на kk: mm: ss, это даст мне 24:00:00. Я этого не понимаю.

4. Date Объект, который вы передаете, должен быть установлен на 00:00:00. Убедитесь, что вы используете правильный Date объект при вызове format. Я только что попробовал код, и он отлично работает для меня.

5. Это показывает мне текущую дату, потому что дата сегодня = новая дата (); Обратите внимание, что моя дата сначала длинная («1318950779497»), затем я превращаю ее в строку (вторник, 18 октября 2011 г.) и передаю ее в объект Date: Date дата = новая дата (date_str);. И это дает мне 00:00:00. Я предполагаю, что date_str не включает время. Но я не знаю, как решить эту проблему.