论NSDate 时区问题

+date 初始化一个date 类,或者用这个方法获取到的date都是零时区的标准时间,当你用NSDateFormatter 转化不设置TimeZone的转化成字符串的时候,他会将这个日期转化为当前时区的时间,这个时间就是我们本地的时间;如果你用formatter在转化的时候,转化完了他又变成了零时区的时间(这里是NSDate类)。如果我们就想NSDate这个类就是我们这个时区的时间呢怎么办呢?这个如果我们需要转化成我们当地的时间需要转化:
NSDate *date = [NSDate date];
NSDateFormatter *formater = [[NSDateFormatter alloc] init];
formater.dateFormat = @"yyyy-MM-dd hh:mm:ss";
formater.timeZone = [NSTimeZone localTimeZone];
NSString *dateString = [formater stringFromDate:date];
formater.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
NSDate *currentDate = [formater dateFromString:dateString];
当然你转化回来的时候只需要将timeZone设置为零时区的时间就好了,这样你获取到的是什么时间就是什么时间。
这个时候你获取的到的date就是你本地时间的date。这个东西会在什么时间用到。在你要封装一个日历控件的时候,而且这个日历控件会不仅会在一个时区使用,那你么就要保证获取的日期是什么样的,那么就是什么样的,不然获取到的日期是零时区的日期,而你得到就是你本地的日期.

你可能感兴趣的:(论NSDate 时区问题)