-1

の形式の文字列がありますTue May 22 2012 11.00 pm。これを変換してNSDate、現在の日付と時刻のフォームを取得する必要がありNSDate *currentDate = [NSDate today];ます。

次に、2 の時間差を求めますSeconds

私はこれを解決できません、助けてください

4

4 に答える 4

2

Tue May 22 2012 11.00 pm という形式の文字列があります。これをNSDateに変換する必要があります

この部分では `NSDateFormatter` が必要です

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"EEE MM dd yyyy hh.mm a"];
NSDate *dateFromString =[df dateFromString:yourString];

これが最初の部分でした。

今のために

次に、2 の間の秒単位の時間差を見つけます。

NSTimeIntervall diffInSeconds = [dateFromString timeIntervalSinceNow];

これにより、現在と現在の間の秒数が計算されdateFromStringます。

ココアでの日付と時刻の操作に関する詳細については、Ole Begemenans の「Working with Date and Time in Cocoa Series」を強くお勧めします。

于 2012-05-29T07:38:28.483 に答える
2

NSDateFormatter を使用して、文字列日付 Tue May 22 2012 11.00 pm を NSDate に変換します。また、nsdateformatter で文字列の日付のタイムゾーンを設定する必要があります。

例:

    NSDateFormatter * frmt;
    frmt = [[NSDateFormatter alloc] init];
    frmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    frmt.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];

文字列に対応する dateFormat を使用する必要があります。

次に、nsdate を使用して取得します

[frmt dateFromString:(NSString *)dateString]

次に、2つの NSDate を比較できます-timeIntervalSinceDate

于 2012-05-29T07:41:04.693 に答える
1

-dateFromString:NSDateFormatterクラスのメソッドが役立ちます。

次に-timeIntervalSinceNowofNSDateは時間間隔を与えます。中間ステップは必要ありません[NSDate today]

于 2012-05-29T07:38:30.840 に答える
1

両方をtime_t(おそらく でmktime) に変換してから減算します。理論上は を使用difftimeして差を計算する必要がありますが、実際time_tにはほとんどの典型的なシステム (ほぼ確実に MacOS を含む) ではエポック (POSIX では 1970 年 1 月 1 日の真夜中) からの整数秒数であるため、減算は正常に機能します。

もちろん、夏時間に由来するしわがいくつかあり、そのうちのいくつかは解決できないあいまいさを生み出します。

于 2012-05-29T07:35:33.743 に答える