需要有关 NSDateFormatter 的帮助 [英] Need assistance regarding NSDateFormatter

查看:75
本文介绍了需要有关 NSDateFormatter 的帮助的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只想要像29-10-2014"这样没有时间的日期,所以我这样做了

I only want date like "29-10-2014" with no time so i did this

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

如果我记录 sDate,我会得到完美的结果.但我不想要 NSString 我想要日期对象,在这里我所做的是

If I log the sDate I am getting perfect result. But I dont want NSString I want date object, to do that here what I did is

NSDate *theDate = [df dateFromString:sDate];

现在我收到 2014-10-29 19:00:00 +0000我只想要29-10-2014.

Now I am getting 2014-10-29 19:00:00 +0000 I only want 29-10-2014.

推荐答案

这是因为 -[NSDate description] 返回完整格式的日期.

This is because -[NSDate description] returns you full formatted date.

您可以混合 NSDate 的 - (NSString *)description{} 并返回您想要的内容.
请注意,这是一个非常糟糕的做法

You can swizzle NSDate's - (NSString *)description{} and return something that you want.
Note that this is a very bad practice

#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

这篇关于需要有关 NSDateFormatter 的帮助的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆