#java #android #parsing #type-conversion #java-time
#java #Android #синтаксический анализ #преобразование типа #java-time
Вопрос:
У меня есть этот код: что это делает, так это преобразует строку в объект времени.
String time = "288:30:18";
DateFormat sdf = new SimpleDateFormat("hh:mm:ss");
Date date = sdf.parse(time);
Основная цель состоит в том, чтобы пользователь мог вводить время в формате ЧЧ: ММ: СС. Дело в том, что HH может быть любым числом (> 12, даже> 24). Как мне сохранить HH таким, какой он есть?
В приведенном выше фрагменте я получаю время как 12:30:18. Как мне предотвратить анализ части HH (я хочу, чтобы она оставалась 288)?
Комментарии:
1. Не пытайтесь сделать это датой. Я бы использовал Joda-Time
Interval
2. не могли бы вы дать мне код? Я хочу, чтобы он был проанализирован из строки
3. Или вы могли бы использовать установленный в календаре (МИНУТА, …) набор (СЕКУНДА, …)
4. Пожалуйста, дайте какой-нибудь код. Мне НУЖНО, чтобы он был проанализирован из строки.
5. Если вы сохраните его как 288 , то для определения точного времени потребуется 288 часов. Если вы хотите сохранить его как есть, то почему вы используете DateFormat? Просто используйте только эту строку.
Ответ №1:
Попробуйте это:
- Проанализируйте часы самостоятельно (используя подстроку от индекса 0 до первого «:».
- Запустите приведенный выше код (ваш код)
- Установите часы в объекте «дата» на число, которое вы проанализировали.
Комментарии:
1. Это всегда был вариант, но я хотел знать, существуют ли уже методы для синтаксического анализа
2. Я не очень хорошо знаком с Android, но иногда лучше использовать такое простое решение, как это, чем пытаться найти «правильное» решение 🙂
3. это неправильно. Речь идет об использовании существующих решений.
Ответ №2:
Хорошо, я нашел лучший способ для обратного отсчета в Android. Вот код:
CountDownTimer c=new CountDownTimer(30000,1000) {
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
}
}.start();