从日期删除时间

时间:2012-08-15 16:57:27

标签: ios nsdate

我遇到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);

2 个答案:

答案 0 :(得分:3)

使用

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

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

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

答案 1 :(得分:1)

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

如果您需要使用日历日期而不管时间,您可以:

  1. 使用NSDate对象并忽略时间组件。你需要警惕时区,因为8月15日午夜,一个时区可以是8月14日晚上11点,另一个时区。

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