如何比较iPhone中的当年和当年?

时间:2010-04-20 09:28:07

标签: iphone date

我是iPhone开发的新手。我正在解析XML URL并在表格视图中显示标题,日期和摘要。

我注意到有些日期非常古老,比如“星期三,1969年12月31日19:00:00 -0500”,所以我不想显示比当年年长1岁的日期。怎么做?我使用this站点的示例代码进行解析并显示详细信息。

2 个答案:

答案 0 :(得分:3)

处理日期(NSDate类)是一件相当痛苦的事情,它给我带来了很多麻烦和愤怒。

基本上你有不同的方法:

1。)从您的日期获取组件并将它们与您的参考日期进行比较。 看起来像这样:

//假设您有一个名为dateOfSearch的NSDate对象

unsigned int unitFlags = NSDayCalendarUnit|NSYearCalendarUnit;
NSDateComponents *comp; 


NSCalendar *calendar = [NSCalendar currentCalendar];


comp = [calendar components:unitFlags fromDate:dateOfSearch];
NSInteger *year = [comp year];

// year no包含dateOfSearch对象所包含的年份。 //提醒您:这是向您展示如何提取NSDate对象年份的基本示例

2。)使用NSDate的timeReferenceSince1970或其他“等价物”进行比较(更容易)

NSDate的timeReference方法返回两个referenceDates之间的秒数

所以一个好的方法是

NSDate *today = [[NSDate alloc] init] //today
NSDate *pastDate = [self getPastDateFromWhereEver];
NSTimeInterval *difference =  [pastDate timeIntervalSinceDate:today];

if(差异< .....)

希望有所帮助

欢呼声

答案 1 :(得分:2)

除了samsam的答案之外,在查看您的示例代码之后,您必须将日期字符串转换为NSDate对象:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];

[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"];
NSDate *myDate = [dateFormatter dateFromString:@"Wed, 31 Dec 1969 19:00:00 -0500"];