Objective c NSDate date don';Don’别给我合适的时间

Objective c NSDate date don';Don’别给我合适的时间,objective-c,ios,nsdate,Objective C,Ios,Nsdate,我正在尝试通过以下方式获取当前日期: NSLog(@"DATE NOW : %@", [NSDate date]); 但是当我执行它时,显示的日期和当前日期之间有一个小时的差异 我找到了这样的问题,但没有一个能给我答案。 我怎样才能更改它?您需要设置正确的时区。如您所见,默认值为UTC 您可以使用日期格式化程序来实现这一点 NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; NSTimeZone * timezo

我正在尝试通过以下方式获取当前日期:

NSLog(@"DATE NOW : %@", [NSDate date]);
但是当我执行它时,显示的日期和当前日期之间有一个小时的差异

我找到了这样的问题,但没有一个能给我答案。
我怎样才能更改它?

您需要设置正确的时区。如您所见,默认值为UTC

您可以使用日期格式化程序来实现这一点

NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
NSTimeZone * timezone = [NSTimeZone timeZoneWithName:@"Europe/Rome"];
[dateFormatter setTimeZone:timezone];
[dateFormatter setTimeStyle:NSDateFormatterFullStyle
 ];
[dateFormatter setDateStyle:NSDateFormatterFullStyle];    


NSLog(@"%@", [dateFormatter stringFromDate:[NSDate date]]);
有关可用时区的列表,请使用

NSArray *timeZoneNames = [NSTimeZone knownTimeZoneNames];

或者查看此Rails上的常量。

日期是一个抽象值。您需要的是正确显示它,您可以使用日期格式化程序来实现这一点。我添加了日期和时间的样式设置,因此它现在可以打印类似于2012年12月29日星期六下午4:28:25中欧标准时间的内容。显然你可以自定义它。@Gabrielle:我不想打印它,我想将它设置为自定义NSObject的属性。@Seb按原样存储它。NSDate包含时区信息(尾随的
+0000
),因此无论何时需要显示它,只要格式化它就可以了
NSDate
是一个模型,而其格式(时区、样式等)纯粹是一个可视化问题。顺便说一句,我的名字里只有一个“l”:Pindedct,它给了我:“heure normale de l'Europe centrale/2012-12-29 16:47:02+0000”,谢谢。但是我怎样才能把它转换成日期???