Никогда не вызывайте Thread.sleep (...) из потока событий Swing, так как это приведет к тому, что сам поток событий будет спать. Поскольку этот поток отвечает за всю окраску Swing и взаимодействие с пользователем, это заставит ваше приложение спать.
Если все, что вы хотите, это задержка на дисплее, тогда рассмотрите использование Swing Timer .
Если, с другой стороны, поток событий скомпрометирован долговременной задачей, то выполняйте задачу в фоновом режиме, используя SwingWorker (как предположил Гийом 1+) .
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"HHmmss"];
NSDate *date1 = [dateFormatter dateFromString:@"161500"];
NSDate *date2 = [dateFormatter dateFromString:@"171500"];
NSTimeInterval diff = [date2 timeIntervalSinceDate:date1]; // diff = 3600.0
Класс для управления датами NSDate
. Метод для получения временных интервалов -timeIntervalSinceDate:
. Результат NSTimeInterval
значение, которое является double
представление интервала в секундах.
можно создать NSDate
объект от NSString
с +dateWithString:
, при условии, что дата отформатирована как 24.03.2001 10:45:32 +0600 .
Я создал бы подкласс NSFormatter для парсинга временных стоимостей в том формате от входных данных (можно поместить один на текстовое поле, чтобы автоматически преобразовать ввод данных пользователем или использовать его для парсинга от источника данных в коде). Имейте его, возвращают объединенное число секунд как NSTimeInterval (дважды представляющий секунды) обернутый в NSNumber. Оттуда легко вычесть различие и отобразить его с помощью того же класса NSFormatter, который Вы создали. И в парсинге и в отображении значений, Вы - одно ответственное для записи преобразования кода с секунд к hours:minutes:seconds или безотносительно формата, который Вы любите. Вы могли также преобразовать эти значения в NSDate как упомянутый mouviciel, если он имеет смысл для Вашего приложения. Просто имейте в виду, что Вы всегда собираетесь быть хранением разницы во времени со ссылочной даты, обычно Jan 1-й 1970 (NSDate имеет методы, чтобы сделать это для Вас).