2014-10-30 2 views
-1

Я хочу только дату, как «29-10-2014» без времени, так что я сделал этоНужна помощь в отношении NSDateFormatter

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

Если я вхожу в sDate я получаю идеальный результат. Но я не хочу, я хочу NSString объект даты, чтобы сделать здесь то, что я сделал это

NSDate *theDate = [df dateFromString:sDate]; 

Теперь я получаю 2014-10-29 19:00:00 +0000 Я только хочу 29-10-2014.

+0

вы можете сказать мне, почему вы хотите что-то вроде этого? когда вы хотите дату или время из NSDate, вы можете сделать dateformatter и просто использовать его. – Pawan

+0

есть похожие сообщения, например: http://stackoverflow.com/questions/3916392/removing-time-components-from-an-nsdate-object-using-objective-c-cocoa –

ответ

0

здесь ваше решение

вы передаете строку SDATA в NSDate, а передать NSDate объект как этот

 NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"dd-MM-yyyy"]; 
    NSDate *now = [[NSDate alloc] init]; 

    NSDate *last=[dateFormat stringFromDate:now]; 
    NSLog(@"last==%@",last); 
+0

, но он написал под вопросом i не хочу, чтобы объект string хотел объект NSDate. –

1

Это происходит потому, что -[NSDate description] возвращает вам полный отформатированный дату.

Вы можете запятнать 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 
+1

@ 10gg3r, ур справа. –

0

Вам нужно будет использовать класс NSCalender получить год, месяц и день компонентов. Класс NSDate всегда будет представлен в GMT.

Использование

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

Проверить эту статью тоже. Используйте свойства для извлечения значения из NSDate http://nshipster.com/nsdatecomponents/

0

Вот простой код

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

Я тоже делаю то же самое, но мой объект даты из массива и его не работает для меня :(. –

Смежные вопросы