#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 не включает время. Но я не знаю, как решить эту проблему.