[NSDate date]获取的是GMT时间,这个时间和北京时间相差8个小时,以下代码可以解决这个问题
//方法一
- (void)tDate
{
NSDate *date = [NSDatedate];
NSTimeZone *zone = [NSTimeZonesystemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate: date];
NSDate *localeDate = [date dateByAddingTimeInterval: interval];
NSLog(@"%@", localeDate);
}
方法二
- (NSString*)dateAsString:(NSDate*)date
{
NSString *returnValue = @"";
NSDateFormatter *dateFormatter = nil;
if (date != nil) {
if (dateFormatter ==nil) {
dateFormatter = [[NSDateFormatteralloc]init];
}
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setLocale:[NSLocalecurrentLocale]];
returnValue = [dateFormatter stringFromDate:date];
}
return returnValue;
}
//方法三
+ (NSString *)fixStringForDate:(NSDate *)date
{
NSDateFormatter* dateFormatter = [[NSDateFormatteralloc]init];
[dateFormatter setDateStyle:kCFDateFormatterFullStyle];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *fixString = [dateFormatter stringFromDate:date];
[dateFormatter release];
return fixString;
}
//方法四
NSDateComponents *comps = [[NSDateComponentsalloc]init];
[comps setYear:2010];
[comps setMonth:8];
[comps setDay:24];
[comps setHour:17];
[comps setMinute:5];
[comps setTimeZone: [NSTimeZonetimeZoneWithAbbreviation:@"UTC"]];
NSLog(@"%@", [NSTimeZonetimeZoneWithAbbreviation:@"UTC"]);
NSCalendar *cal = [[NSCalendaralloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *referenceTime = [cal dateFromComponents:comps];
NSLog(@"%@", referenceTime);