如何在表列中显示NSDate

时间:2013-11-08 15:03:00

标签: objective-c cocoa

我有一个包含“name”和“date”列的表

我希望日期以“dd / MM / yy”格式显示,但它显示为“2012年4月13日星期五12:00:00印度标准时间”。

我有以下代码:

Person.h

@interface Person : NSObject{

    NSString *name;
    NSDate *date;
}

@property(retain) NSString *name;

@property(retain) NSDate *date;

Person.m

#import "Person.h"

@implementation Person

@synthesize name; 

@synthesize date;

- (id)init {

    self = [super init];

    self.date = [NSDate date];

    return self;

}

- (void)dealloc {

    [name release];

    [date release];

    [super dealloc];
}

现在,在向表中添加数据时,我编写了以下代码

Person *data = [Person new];
[data setName:@"abc"];

NSString *dateStr = @"13/04/12";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd/MM/yy"];
NSDate *date = [dateFormat dateFromString:dateStr];
[data setDate:date];

[arrayController addObject:data];
[data release];

arrayController是NSArraycotroller。 在nstable中添加所有条目后,将Person对象添加到arrayController中 [tableView reloadData]更新表视图。

但在表格中显示“2012年4月13日星期五上午12:00:00印度标准时间”

请建议任何解决方案。

1 个答案:

答案 0 :(得分:1)

看起来您正在使用基于单元格的NSTableView。

如果您想通过以下代码实现此目的:

您应该实现NSTableViewDelegate方法:-tableView:dataCellForTableColumn:row: 在创建NSCell实例后,将格式化程序设置为此单元格实例(创建NSDateFormatter的实例并进行设置),使用[NSCell setFormatter:]方法。

通过IB:

搜索NSDateFormatter,然后只需拖动&放下单元格,该单元格应显示此日期。它还会为您提供修改日期格式化程序行为的选项,但您希望能够更改显示格式,因为它是从区域设置中获取的。