Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
edogaafx
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 42
#1

Форматирование времени - Android

01.06.2015, 09:57. Просмотров 339. Ответов 18
Метки нет (Все метки)

Добрый день,
Нужно мне было из String времени достать отдельно дату и отдельно время.
День-месяц-год вытянуть получилось, а вот время - нет.
Пример, как хронится дата:
2015-05-06 11:06:00
Java
1
2
3
4
5
6
7
8
9
10
System.out.println(list.get(i).getStartDate());
SimpleDateFormat stf = new SimpleDateFormat("HH:mm");
String startTime = list.get(i).getStartDate();
try {
    startTime = stf.format(stf.parse(startTime)).toString();
    System.out.println("Time: " + startTime);
} catch (java.text.ParseException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}
Таким-же способом вытягивал дату:
Java
1
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Так-же и получил и отформатировал текужее время, и результат такой, как мне и надо.
Но вот со временем из базы данных проблемка..
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
01.06.2015, 10:54     Форматирование времени #2
Цитата Сообщение от edogaafx Посмотреть сообщение
Пример, как хронится дата:
Что делает? Мб хранится?
Regex может поможет?
edogaafx
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 42
01.06.2015, 10:58  [ТС]     Форматирование времени #3
А без Regex никак?
Просто, дата и текущее время ведь парсируется..
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
01.06.2015, 11:01     Форматирование времени #4
Regex и есть парсинг, пара строк, написать чтоли?
На вход "2015-05-06 11:06:00" как должно быть в итоге? На выход что?
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
01.06.2015, 11:03     Форматирование времени #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
edogaafx, дата всегда в таком формате? Если да можно так:
Java
1
2
3
4
    String srcDate = ...;//Исходная дата.
    String[] srcDateArray = srcDate.split(" ");
    String date = srcDateArray[0];
    String time = srcDateArray[1];
edogaafx
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 42
01.06.2015, 11:03  [ТС]     Форматирование времени #6
в итоге - часы и минуты "11:06".
Spelcrawler, спасибо, работает.
а отнимать время, например, нынешнее время - время события, удобно после таких операций?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
01.06.2015, 11:44     Форматирование времени #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Java
1
2
3
Pattern p = Pattern.compile(".+(\\d{2}:\\d{2}):.+");
Matcher m = p.matcher("2015-05-06 11:06:00");
if (m.matches()) System.out.println(m.group(1));
Для отнимать время нужно в Calendar сетить время и там отнимать.
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
01.06.2015, 11:45     Форматирование времени #8
Цитата Сообщение от Rube Посмотреть сообщение
Для отнимать время нужно в Calendar сетить время и там отнимать.
Ага, а еще лучше хранить время в unix time. Тогда вообще проблем никаких не будет.
edogaafx
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 42
01.06.2015, 11:48  [ТС]     Форматирование времени #9
Я сделал как-то по другому.
Тот пример, чт опоказал Spelcrawler, я из времени взял часы и парс в Инт.
Отнять их смог. Как-раз, что-бы я смог сделать то, что задумал.
Спасибо Rube, и Spelcrawler, за помощь!
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
01.06.2015, 12:41     Форматирование времени #10
Цитата Сообщение от edogaafx Посмотреть сообщение
Как-раз, что-бы я смог сделать то, что задумал.
А теперь отними 3 часа из 02:00, что будет?
edogaafx
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 42
01.06.2015, 12:47  [ТС]     Форматирование времени #11
вроде всё нормально. я забираю только часы, т.е. 01,02,..23,24..
Сейчас проверял, вроде всё отнимает как надо. 03 - 12 = -9, например.
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
01.06.2015, 12:48     Форматирование времени #12
edogaafx, эмм, а -9 часов это нормально?
edogaafx
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 42
01.06.2015, 12:49  [ТС]     Форматирование времени #13
Нет, но мне и не надо число, мне надо, что-бы число попадало в определённый радиус.

Java
1
result >= 0 && result <= 3
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
01.06.2015, 12:52     Форматирование времени #14
Короче свои заморочки Работает и ладно, как говорил Сократ
edogaafx
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 42
01.06.2015, 12:56  [ТС]     Форматирование времени #15
Мне это время нужно было, что-бы пользователя предупредить о Ивенте, который будет в ближайшие 3 часа.
Я веду проверку:
1. в фаворитах ли у пользователя ивент;
2. совпадает ли дни, т.е. сегодня ли ивент;
3. Попадает ли время в этот интервал
Java
1
result >= 0 && result <= 3
?
3.1. Если да, то кинуть нотификацию;
3.2. Если нет, то через 3 часа вернёмся к 1 пункту.
Как-то так.
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
01.06.2015, 12:58     Форматирование времени #16
edogaafx, а если сейчас 23:00, а ивент назначен на 02:00?
edogaafx
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 42
01.06.2015, 13:02  [ТС]     Форматирование времени #17
Spelcrawler, тогда.
Например,
Java
1
2
3
4
5
6
a = 02;
b = 23;
result = 02 - 23;
result = -21;
//как-то сделать -21 позитивным
24 - 21 = 3;
как-то так надо теперь сделать...
Даже позитивным делать -21 не надо.
24 + (-21) = 3
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
01.06.2015, 13:13     Форматирование времени #18
edogaafx, всетаки с временем в миллисекундах проще, можно просто вычитать эти же миллисекунды и все:
Java
1
2
3
4
5
long eventTime = ...;
long notificationInterval = 1000 * 60 * 60 * 3;//3 часа.
if((eventTime - System.currentTimeInMillis()) <= notificationInterval){
//Показать уведомление.
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2015, 13:16     Форматирование времени
Еще ссылки по теме:

Уведомление по заданному времени Android
Вывод по времени Android
Android Форматирование даты из строки
Android Форматирование строки, полученной из БД
Android Уведомления по времени

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
edogaafx
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 42
01.06.2015, 13:16  [ТС]     Форматирование времени #19
Ну, у меня так:
Место где устанавливаю время работы нотификации:
Java
1
2
alarmManager.setRepeating(alarmType, SystemClock.elapsedRealtime() + THREE_HOURS,
                THREE_HOURS, pendingIntent);
Константа с временем:
Java
1
final int THREE_HOURS = 60000 * 60 * 3; // millis, minutes, hours
А вся та возня с цифрами была для проверки, нужно ли нотификацию показывать или нет.
Мне это время нужно было, что-бы пользователя предупредить о Ивенте, который будет в ближайшие 3 часа.
Я веду проверку:
1. в фаворитах ли у пользователя ивент;
2. совпадает ли дни, т.е. сегодня ли ивент;
3. Попадает ли время в этот интервал
Код Java(TM) 2 Platform Standard Edition 5.0

1



result >= 0 && result <= 3

?
3.1. Если да, то кинуть нотификацию;
3.2. Если нет, то через 3 часа вернёмся к 1 пункту.
Как-то так.
Yandex
Объявления
01.06.2015, 13:16     Форматирование времени
Ответ Создать тему
Опции темы

Текущее время: 21:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru