需要关于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