我必須將日期(來自服務器)與今天的日期進行比較。服務器的日期格式不同(即日期格式可能爲2015-09-08或2015-09-08T11:30:00 + 0530)iOS中的日期轉換
我們如何才能比較這些不同的日期格式與今天的日期iOS(Objective-C)。
我必須將日期(來自服務器)與今天的日期進行比較。服務器的日期格式不同(即日期格式可能爲2015-09-08或2015-09-08T11:30:00 + 0530)iOS中的日期轉換
我們如何才能比較這些不同的日期格式與今天的日期iOS(Objective-C)。
嘗試用這種
-(void)dateFormateTest{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss Z";
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[formatter setTimeZone:[NSTimeZone defaultTimeZone]];
[NSTimeZone resetSystemTimeZone];
NSDate *date = [formatter dateFromString:@"2015-10-06 12:39:12"];
NSLog(@"date: %@",date);
NSComparisonResult result = [date compare:[NSDate date]];
if (result == NSOrderedDescending) {
NSLog(@"Past");
}else if (result == NSOrderedDescending) {
NSLog(@"future");
}
}
爲什麼在日期格式化程序上設置兩種不同的日期格式? – rmaddy
其實,有沒有問題,如果要比較不同格式的兩個日期,問題是比較你必須確保
1.它們轉換爲日期值同一時區。
2.使用 - (NSComparisonResult)比較:(NSDate的*)anotherDate方法
另外,如果你想你的日期字符串響應從HE轉換成NSDate的,你可以做如下
+ (NSDate *)dateFromDateString:(NSString *)dateString withFormat:(NSString *)format {
NSDateFormatter *formatter = [NSDateFormatter new];
formatter.dateFormat = format;
return [formatter dateFromString:dateString];
}
此外,在特定的組件(如年,月,日,小時無,分或秒)比較兩個日期的期限,你必須使用NSDateComponents
- (BOOL)date:(NSDate *)aDate isEqualToDateIgnoringTime:(NSDate *) anotherDate
{
NSCalendarUnit unitFlags = (NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond);
NSDateComponents *components1 = [[NSCalendar currentCalendar] components:unitFlags fromDate:aDate];
NSDateComponents *components2 = [[NSCalendar currentCalendar] components:unitFlags fromDate:anotherDate];
return ((components1.year == components2.year) && (components1.month == components2.month) && (components1.day == components2.day));
}
更新你的問題與到目前爲止你已經嘗試了什麼。解釋你有什麼問題。 – rmaddy
如果你想在Objective C中找到答案,你爲什麼用swift標籤標記你的問題? –