2013-08-03 3 views
-1

У меня есть значение float, мне нужно преобразовать мой поплавок на сегодняшний день. Например, у меня есть float 50,55, я хочу добавить значение метки следующим образом: 50 лет 6 месяцев 6 часов 6 минут 30,04 сек.Как конвертировать поплавок в формат даты?

И мне интересно, как изменить эту метку каждые 0,01 секунды для значения изменения. Пожалуйста, предоставьте мне решение для конвертации моего формата float в формат даты, любая помощь будет оценена по достоинству.

Это код я использую для создания моего поплавка:

-(float)calculationResult{ 

    lifeTime = (kCountry +kEdu - kBirth - kSmo -kAlco+kDis+kHap+kDri+kMar)*kWei*kEnv*kSle; 

    return lifeTime; 
} 
+1

Вы хотите что? Поплавок недостаточно для этого достаточно. Годы и месяцы имеют разное количество дней, и никто не может видеть 100 значений в секунду. Скажите, что вы не хотите показывать каждые 100 секунд. Взгляните на класс TimeSpan. –

+0

Мой поплавок - это количество лет, как этого может быть недостаточно? Если вы имеете в виду bissextile years, я полагаю, что все годы равны и имеют 365 дней. –

+0

@EvgeniyKleban: Одна секунда примерно 3е-08 лет, то есть за пределами точности поплавка, вам понадобится как минимум двойной. - И сколько дней должно пройти месяц для вашего расчета? –

ответ

1

Следующий код делит заданное число «дробных лет» в лет, месяц, дни и часы. Это делает упрощающие предположения, что каждый год имеет 365 дней, а месяц составляет ровно 1/12 года.

float tmp = lifeTime; 
int years = tmp; 
tmp = (tmp - years) * 12.; 
int months = tmp; 
tmp = (tmp - months) * 365./12.; 
int days = tmp; 
tmp = (tmp - days) * 24.; 
int hours = tmp; 

NSString *str = [NSString stringWithFormat:@"%d years %d month %d days %d hours ", 
       years, months, days, hours]; 

Чтобы обновить метку регулярно, вы можете использовать NSTimer класс (но обновляя каждую 1/100 секунды слишком часто).

+0

Его работа, большое вам спасибо. –

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