6

私はすでに NSDate を試しましたが、うまくいきませんでした。たとえば、14:10 と 18:30 の違いが必要です。

時間と分。

私はあなたが私がそれほど複雑であってはならないのを手伝ってくれることを願っています:)

4

4 に答える 4

30

これを手で計算する必要はありません。 を見てくださいNSCalendar。2 つの日付の間の時間と分を取得する場合は、次のようにします。

NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit;
NSDateComponents *components = [gregorianCalendar components:unitFlags
                                                    fromDate:firstDate
                                                      toDate:otherDate
                                                     options:0];
[gregorianCalendar release];

これで、時間と分が NSDateComponents として取得され、 および のようにアクセスできるNSIntegersよう[components hour]になり[components minute]ました。これは、日、うるう年、およびその他の楽しいものの間に何時間も機能します。

于 2010-01-05T14:24:17.567 に答える
19

これが私の簡単な解決策です:

NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
[df setDateFormat:@"HH:mm"];
NSDate *date1 = [df dateFromString:@"14:10"];
NSDate *date2 = [df dateFromString:@"18:09"];
NSTimeInterval interval = [date2 timeIntervalSinceDate:date1];
int hours = (int)interval / 3600;             // integer division to get the hours part
int minutes = (interval - (hours*3600)) / 60; // interval minus hours part (in seconds) divided by 60 yields minutes
NSString *timeDiff = [NSString stringWithFormat:@"%d:%02d", hours, minutes];
于 2009-11-24T20:21:36.980 に答える
12

NSDate クラスには、トリックを実行するメソッド timeIntervalSinceDate があります。

NSTimeInterval secondsBetween = [firstDate timeIntervalSinceDate:secondDate];

NSTimeInterval は、2 つの時間の間の秒数を表す double です。

于 2009-11-24T19:57:06.577 に答える
7
NSString *duration = [self calculateDuration:oldTime secondDate:currentTime];

- (NSString *)calculateDuration:(NSDate *)oldTime secondDate:(NSDate *)currentTime
{
    NSDate *date1 = oldTime;
    NSDate *date2 = currentTime;

    NSTimeInterval secondsBetween = [date2 timeIntervalSinceDate:date1];

    int hh = secondsBetween / (60*60);
    double rem = fmod(secondsBetween, (60*60));
    int mm = rem / 60;
    rem = fmod(rem, 60);
    int ss = rem;

    NSString *str = [NSString stringWithFormat:@"%02d:%02d:%02d",hh,mm,ss];

    return str;
}
于 2014-09-12T07:52:15.710 に答える