需要关于NSDateFormatter的帮助

我只想要像“29-10-2014”这样的date,没有时间,所以我做了这个

NSDateFormatter *df = [[NSDateFormatter alloc]init]; [df setDateFormat:@"dd-MM-yyyy"]; NSString *sDate = [df stringFromDate:date]; 

如果我loginsDate我正在得到完美的结果。 但我不想要NSString我想要的date对象,在这里做我做的是

 NSDate *theDate = [df dateFromString:sDate]; 

现在我正在2014-10-29 19:00:00 +0000我只想要29-10-2014

这是因为-[NSDate description]返回完整的格式化date。

你可以调用NSDate的- (NSString *)description{}并返回你想要的东西。
请注意,这是一个非常糟糕的做法

 #import <objc/runtime.h> @implementation NSDate (CustomDescription) + (void)load { swizzleInstance(@selector(description), @selector(description_m), [UIViewController class], [self class]); } static void swizzleInstance(SEL originalSl, SEL swizzledSl, Class originalCl, Class swizzledCl) { Method originalMethod = class_getInstanceMethod(originalCl, originalSl); Method swizzledMethod = class_getInstanceMethod(swizzledCl, swizzledSl); method_exchangeImplementations(originalMethod, swizzledMethod); } - (NSString *)description_m { NSDateFormatter *df = [[NSDateFormatter alloc]init]; [df setDateFormat:@"dd-MM-yyyy"]; return [df stringFromDate:self]; } @end 

这是你的解决scheme

您在nsdate中传递stringsdata,而是像这样传递nsdate对象

  NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"dd-MM-yyyy"]; NSDate *now = [[NSDate alloc] init]; NSDate *last=[dateFormat stringFromDate:now]; NSLog(@"last==%@",last); 

您将需要使用NSCalender类来获取年,月和date组件。 NSDate类将始终以GMT表示。

使用

 NSCalendar *calendar = [NSCalendar currentCalendar]; NSDate *date = [NSDate date]; [calendar components:(NSDayCalendarUnit | NSMonthCalendarUnit) fromDate:date]; 

也检查这篇文章。 使用属性从NSDate中检索值http://nshipster.com/nsdatecomponents/

这是简单的代码

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"dd-MM-yyyy"]; NSString* reqDate = [dateFormatter stringFromDate:[[NSDate alloc] init]]; NSLog(@"reqDate: %@",reqDate);//reqDate: 30-10-2014