Лучший способ сохранить значение времени - PullRequest
1 голос
/ 15 ноября 2010

Моему классу нужны два свойства: startTime и endTime. Какой класс лучше использовать? Я знаю, что есть NSDate, но мне нужно хранить только определенное время (что-то между 00: 00-23: 59), мне не нужна дата. Какое здесь самое элегантное решение?

Ответы [ 4 ]

3 голосов
/ 15 ноября 2010

NSTimeInterval, вероятно, достаточно хорош для этого.

Он хранит значение времени в секундах как двойное число.5 минут = 300,0

1 голос
/ 15 ноября 2010

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

NSTimeInterval - это typedef для doubleи является измерением времени в секундах.Этот примитивный тип времени не имеет понятия контрольной даты.Что NSDate делает, так это добавляет эту концепцию контрольной даты и привязывает время 0,0 к 1 января 2001 года по Гринвичу.Ничто не мешает вам изобрести собственную контрольную дату или якорь , как, например, "полночь того дня, когда" "1013 *.

Что вы можете сделать, это добавить два свойства NSTimeInterval либо startTime и endTime, и позволить им обоим использовать полночь в качестве ссылки.Или вы можете пропустить endTime и пойти на комбинацию startTime и duration.

0 голосов
/ 15 ноября 2010

Класс NSDate похож на класс DateTime в C #: оба содержат дату и время, но они могут быть независимы друг от друга.В Какао вы бы сравнили два класса NSDate:

//Create NSDate objects in the time format
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH:mm:ss"];
NSString *startTimeString = @"00:00:00"; //0 seconds
NSString *endTimeString = @"00:00:52"; //52 seconds
NSDate *startTime = [dateFormatter dateFromString:startTimeString];
NSDate *endTime = [dateFormatter dateFromString:endTimeString];

//Compare the time
BOOL date1before2 = [startTime compare:endTime] == NSOrderedAscending;
0 голосов
/ 15 ноября 2010

Существует NSDateComponents, который "также может использоваться для указания продолжительности времени, например, 5 часов и 16 минут."

...