我尝试从设备获取当地时间
nsdate将返回UTC时间
当我使用localtime区域转换时,字符串将返回当前本地时间......
我再次尝试将字符串转换为本地日期,但它只返回UTC时间
这是我的代码......如何在NSDate中获得本地时间...
NSDate *currentDate = [NSDate date];
NSLog(@"currentDate: %@", currentDate); // Result: currentDate: 2014-05-19 05:21:50 +0000
NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
[dateFormatter2 setTimeZone:[NSTimeZone localTimeZone]];
[dateFormatter2 setDateFormat:@"yyyy/MM/dd HH:mm:ss"];
NSString *strDate = [dateFormatter2 stringFromDate:currentDate];
NSLog(@"strDate: %@", strDate); // Result: strDate: 2014/05/19 10:51:50
NSDate *newDate = [dateFormatter2 dateFromString:strDate];
NSLog(@"newDate: %@", newDate); // Result: newDate: 2014-05-19 05:21:50 +0000
任何人都可以帮助在NSDate中获取本地日期时间
答案 0 :(得分:3)
试试这个:
NSDate* sourceDate = [NSDate date];
NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:sourceDate];
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate];
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
NSDate* destinationDate = [[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate];
答案 1 :(得分:2)
时间总是以NSDate
格式保存为UTC,无法更改。
可以获得本地时区的字符串表示,OP已经完成了。
NSDate
的参考日期为“2001年1月1日的第一次格林尼治标准时间”