2012-08-15 157 views
2

我遇到了NSDate实例的问题。从日期删除时间

我收到日期2012-08-16 00:00:00 +0000
但我需要从00:00:00 +0000中删除。

有没有办法做到这一点?

NSDateFormatter *formatter = [[[NSDateFormatter alloc] init]autorelease]; 
[formatter setDateFormat:@"yyyy-MM-dd"]; 
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 
NSDate *eventDate = [formatter dateFromString:currentDate]; // current Tile 

NSLog(@"date %@",eventDate); 

回答

3

使用

NSLog(@"date %@",[formatter stringFromDate:eventDate]); 

一个NSDate仅仅是在单个时间点。它不知道它应该如何格式化,这就是NSDateFormatter的用途。

NSLog(@"date %@",eventDate);打印日期的默认字符串表示形式。

+0

thx快速回复。但我需要得到NSDate实例 – user1397784 2012-08-15 17:15:44

+0

然后我不明白你的问题。你有'eventDate'这是'NSDate'。你需要什么? – 2012-08-15 17:17:49

+0

日期应该在NSDate tyep而不是NSStirng。 [formatter stringFromDate:eventDate]给出一个字符串。 – user1397784 2012-08-16 04:26:13

1

日期格式化程序将字符串转换为日期和日期转换为字符串。无论您如何创建它,NSDate都代表一个时间点。在你的代码中,你似乎认为NSDate会“记住”它所来自的格式化程序没有指定一天的时间;它不会。当你打电话给dateFromString:时,它只会选择00:00:00(午夜)。

如果需要使用日历日期的工作不分时间,您可以:

  1. 使用的NSDate对象,而忽略时间部分。您需要警惕时区,因为从8月15日的午夜开始,一个时区可能是8月14日晚上11点在另一个时区。

  2. 使用不同的数据结构来存储年,月和日。 NSDateComponents是一个很好的候选人,或者你可以创建自己的。