次のような時刻の文字列があります。
NSString *time = "06.45 pm";
この時刻が今日の日付であると仮定して、現在の System timeを取得し、2 つの時間差を計算する必要があります。
これどうやってするの ?
注: 上記の時間は , を指定していませんdate
(時間のみを指定します)。
次のような時刻の文字列があります。
NSString *time = "06.45 pm";
この時刻が今日の日付であると仮定して、現在の System timeを取得し、2 つの時間差を計算する必要があります。
これどうやってするの ?
注: 上記の時間は , を指定していませんdate
(時間のみを指定します)。
NSString *time = @"06.45 pm";
NSDate *date1;
NSDate *date2;
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh.mm a"];
date1 = [formatter dateFromString:time];
date2 = [formatter dateFromString:[formatter stringFromDate:[NSDate date]]];
[formatter release];
}
NSTimeInterval interval = [date1 timeIntervalSinceDate: date2];//[date1 timeIntervalSince1970] - [date2 timeIntervalSince1970];
int hour = interval / 3600;
int minute = (int)interval % 3600 / 60;
NSLog(@"%@ %dh %dm", interval<0?@"-":@"+", ABS(hour), ABS(minute));
これを行うときは、時間の変更 (夏時間、うるう秒など) を考慮してカレンダー操作を使用していることを確認してください。
NSString *time = @"06.45 pm";
NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *today = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh.mm a"];
// Convert time to a NSDate and break it down into hours, minutes, and seconds:
NSDate *timeAsDate = [formatter dateFromString:time];
NSDateComponents *timeComps = [cal components:NSHourCalendarUnit |
NSMinuteCalendarUnit |
NSSecondCalendarUnit
fromDate:timeAsDate];
// Take today's date and add "time" to it:
NSDateComponents *comps = [cal components:NSYearCalendarUnit |
NSMonthCalendarUnit |
NSDayCalendarUnit
fromDate:today];
comps.hour = timeComps.hour;
comps.minute = timeComps.minute;
comps.second = timeComps.second;
NSDate *timeOnTodaysDate = [cal dateFromComponents:comps];
// Now calculate the difference:
NSTimeInterval difference = [today timeIntervalSinceDate:timeOnTodaysDate];