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);
4

2 回答 2

3

利用

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

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

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

于 2012-08-15T17:09:31.990 回答
1

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

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

  1. 使用 NSDate 对象并忽略时间分量。您需要注意时区,因为一个时区的 8 月 15 日午夜可能是另一个时区的 8 月 14 日晚上 11 点。

  2. 使用不同的数据结构来存储年、月和日。NSDateComponents 是一个不错的选择,或者您可以创建自己的。

于 2012-08-15T17:17:19.177 回答