2016-11-28 1 views
0

Я пытаюсь очистить свой таймер для моего приложения, но им трудно получить его, чтобы делать то, что я хочу.Время форматирования, чтобы удалить ненужные 00 из таймера

Кто-нибудь знает, как отформатировать H: M: S и удалить 00?

Пример времени может начинаться так: 12:34:56 (чч: мм: сс)

Но как только время достигает позволяет говорить 00:34:56, удалите оставшиеся 00-, Я немного беспокоясь о производительности, поэтому я здесь, чтобы найти более эффективный способ отформатировать время, поскольку это будет называться много.

Будет String.format("%02d:%02d", m, s).replaceAll("00:",""); быть мудрым выбором?

Спасибо.

+2

Я думаю, что попытка удалить ведущий '00' может быть более расточительной, чем просто использовать API так, как есть. Не говоря уже о том, что оно не соответствует вашему представлению данных времени, при этом меньшие значения имеют только 4 (2?) Цифры вместо 6. –

+3

'replaceAll (" 00: "," ")' не является хорошим выбором, рассмотрим '11: 00:21 => 11: 21 'Неправильное время. –

+1

вы можете сравнить дату с 01:00:00 и затем форматировать в соответствии с результатом 'hh: mm: ss' или' mm: ss'. –

ответ

2

Я предполагаю, что вы могли бы быть пренебрежимо быстрее, просто проверяя первые 2 символа:

if (timeString.charAt(0) == '0' && timeString.charAt(1) == '0') 
    timeString = timeString.substring(3); 

Я не обязательно думаю, что это отличный код, но 2 проверка характера, вероятно, будет быстрее, чем больше строки поиска. Однако не так много, поэтому я сомневаюсь, что это того стоит.

(Сделано исправление на основе комментария, изменение == '1' к == '0')

+0

По-видимому, я не могу редактировать один символ для вас, но '== '1'' должен сказать' ==' 0'' –

+0

Исправлено это в ответе. Благодарю. –

2

Используя регулярное выражение, вы можете удалить только первый раздел '00:»с помощью (Это только для удаления час участия в HH: MM :: формат времени SS)

String.format("%02d:%02d", m, s).replaceAll("^00:",""); 

^является символ, чтобы отметить начало строки

1

You практически ответили на ваш собственный вопрос. Просто превратите свои мысли в код.

Что вам нужно:

Если время меньше, чем один час, показывать только минуты и секунды; еще, часы показа, минуты и секунды.

Ваш код должен читаться как разговорная версия:

if (hours < 1) { 
    text = String.format("%02d:%02d", minutes, seconds); 
} else { 
    text = String.format("%02d:%02d:%02d", hours, minutes, seconds); 
} 

Простой, чистый, быстрый и легкий для будущих программистов (в том числе себя, через год), чтобы понять.

Смежные вопросы