私は2本の弦を持っています。
NSString *dateof = @"Mon May 21";
NSString *timeof = @"01.00 pm from 11.50 pm"; // 01.00 pm is the start time and 11.50 pm is the end time
NSDate
になるように、これらを s として形式で保存する必要があります2012-05-21 13:00:00 +0000
。
これまでの私のアプローチは次のとおりです。
NSDate *currentTime = [NSDate date];
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents
*currentDateComps = [cal components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit
fromDate:currentTime];
NSString *startDateStringWithYear = [NSString stringWithFormat:@"%@ %d", startDateString, currentDateComps.year];
NSString *endDateStringWithYear = [NSString stringWithFormat:@"%@ %d", endDateString, currentDateComps.year];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"EEE MM dd yyyy"];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
NSDate *startDate = [formatter dateFromString:startDateStringWithYear];
NSArray *timeDurationStringWords = [timeof componentsSeparatedByString:@" "];
// Calculate NSDate's for the start time for today:
NSString *startTimeString = [timeDurationStringWords objectAtIndex:0];
currentDateComps.hour = [[startTimeString substringToIndex:2] intValue];
currentDateComps.minute = [[startTimeString substringFromIndex:3] intValue];
if ([[timeDurationStringWords objectAtIndex:1] isEqualToString:@"pm"])
{
currentDateComps.hour += 12;
}
NSDate *startTime = [cal dateFromComponents:currentDateComps];
コードをデバッグすると、どちらが間違っているかがstartTime
表示されます2012-05-29 07:30:00 +0000
(日付と時刻の両方が正しくありません)。これはGMT時間のせいだと思います。
日付と時刻が必要2012-05-21 13:00:00 +0000
です。