0

2 日間の差を分単位で計算する必要があります。

NSDate *now = [[NSDate alloc] init];

NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
    [outputFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
    [outputFormatter setDateFormat:@"dd/MM/yyyy hh:mm:ss a"];

    NSString* dateStringFromDatabase = @"01/01/1900 11:00:00 AM";

    NSDate* dateFromString = [outputFormatter dateFromString:dateStringFromDatabase];

NSString* a = [outputFormatter stringFromDate:now];
    NSDate* b = [outputFormatter dateFromString:a];

    NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];

    unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit;

    NSDateComponents *components = [gregorian components:unitFlags fromDate:dateFromString
                                                  toDate:b options:0];

    int hours = [components hour];
    int minutes = [components minute];

    self.lblResult.text = [NSString stringWithFormat:@"%i:%i", hours, minutes];

しかし、次の問題があります。現在の時間については、次のようになります。

2012-10-21 07:37:09 +0000 // wrong it's two hours late

にキャストしようとする@"01/01/1900 11:00:00 AM"NSDate

1900-01-01 10:00:00 +0000 // also two hours late
4

3 に答える 3

1

これを試して..................

文字列に日付がある場合は、それを使用して日付に変換します@"dd/MM/yyyy hh:mm:ss a"

NSDate *startDate = ...;
NSDate *endDate = ...;

現在の日付の比較

// Date Comparision
NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];

unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit;

NSDateComponents *components = [gregorian components:unitFlags fromDate:LastDate
                                              toDate:CuurentDate options:0];

2 つの日付の差を取得する

int months = [components month];
int days = [components day];
int hours = [components hour];
int minutes = [components minute];
于 2012-10-20T13:02:54.037 に答える
1

-dateStyleその文字列には日付も含まれているため、時刻スタイルではなくを設定する必要があります。

編集 - -

-dateFormatに変更する必要があります。dd/MM/yyyy HH:mm:ss a

于 2012-10-19T12:48:37.403 に答える
0

これが役立つことを願っています

    NSString *dtString = @"1900-01-01T11:00:00";
    dtString = [dtString stringByReplacingOccurrencesOfString:@"T" withString:@" "];
    NSDate *today = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
    NSString *currentTime = [dateFormatter stringFromDate:today];
    NSDate *toTimeDate = [dateFormatter dateFromString:dtString];
    NSString *toTime = [dateFormatter stringFromDate:toTimeDate];
于 2012-10-19T13:08:01.400 に答える