Как преобразовать NSTimeInterval (секунды) в минуты

Вероятно, необходимо создать wxWidgets. Существует шаг постсборки в wxWidgets процессе сборки, который копирует соответствующий setup.h в C:\wxWidgets_install_dir\include\wx.

104
задан Manoj Rlogical 16 May 2019 в 10:56
поделиться

3 ответа

псевдокод:

minutes = floor(326.4/60)
seconds = round(326.4 - minutes * 60)
146
ответ дан 24 November 2019 в 04:02
поделиться

Поскольку это, по сути, двойное ...

Разделите на 60,0 и извлеките целую часть и дробную часть.

Целой частью будет целое количество минут.

Снова умножьте дробную часть на 60.0.

Результатом будут оставшиеся секунды.

5
ответ дан 24 November 2019 в 04:02
поделиться

Краткое описание

  1. Ответ Брайана Рамзи более удобен, если вы хотите преобразовать только в минуты.
  2. Если вы хотите, чтобы Cocoa API сделал это за вас и преобразовал ваш NSTimeInterval не только до минут, но также и до дней, месяцев, недель и т. д. ... Я думаю, что это более общий подход
  3. Используйте метод NSCalendar:

    • (NSDateComponents *) компоненты: (NSUInteger) unitFlags fromDate: (NSDate *) startDate toDate: (NSDate *) Параметры resultDate: (NSUInteger) opts

    • «Возвращает в качестве объекта NSDateComponents с использованием указанных компонентов разницу между двумя предоставленными датами». Из документации API.

  4. Создайте 2 NSDate, отличием которых является NSTimeInterval, который вы хотите преобразовать. (Если ваш NSTimeInterval получен из сравнения 2 NSDate, вам не нужно делать этот шаг, и вам даже не нужен NSTimeInterval).

  5. Получите цитаты из NSDateComponents

Пример кода

// The time interval 
NSTimeInterval theTimeInterval = 326.4;

// Get the system calendar
NSCalendar *sysCalendar = [NSCalendar currentCalendar];

// Create the NSDates
NSDate *date1 = [[NSDate alloc] init];
NSDate *date2 = [[NSDate alloc] initWithTimeInterval:theTimeInterval sinceDate:date1]; 

// Get conversion to months, days, hours, minutes
unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit;

NSDateComponents *conversionInfo = [sysCalendar components:unitFlags fromDate:date1  toDate:date2  options:0];

NSLog(@"Conversion: %dmin %dhours %ddays %dmoths",[conversionInfo minute], [conversionInfo hour], [conversionInfo day], [conversionInfo month]);

[date1 release];
[date2 release];

Известные проблемы

  • Слишком много для простого преобразования, вы правы, но именно так работает API.
  • Мое предложение: если вы привыкнете к управляйте данными времени с помощью NSDate и NSCalendar, API сделает всю тяжелую работу за вас.
183
ответ дан 24 November 2019 в 04:02
поделиться