我遇到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);
答案 0 :(得分:3)
使用
NSLog(@"date %@",[formatter stringFromDate:eventDate]);
NSDate
只是一个时间点。它不知道它的值应该如何格式化,这就是NSDateFormatter
的用途。
NSLog(@"date %@",eventDate);
打印日期的默认字符串表示形式。
答案 1 :(得分:1)
日期格式化程序将字符串转换为日期和日期为字符串。 NSDate代表一个时间点,无论您如何创建它。在您的代码中,您似乎认为NSDate将“记住”它来自的格式化程序没有指定一天中的时间;它不会。当你拨打dateFromString:
时,它只会选择00:00:00(午夜)作为时间。
如果您需要使用日历日期而不管时间,您可以:
使用NSDate对象并忽略时间组件。你需要警惕时区,因为8月15日午夜,一个时区可以是8月14日晚上11点,另一个时区。
使用不同的数据结构来存储年,月和日。 NSDateComponents是一个很好的候选人,或者你可以创建自己的。