- 手机本地系统时间转化为指定时区时间
NSArray *timeZoneNames = [NSTimeZone knownTimeZoneNames];
NSLog(@"array_%@",timeZoneNames);
NSString *startTime = @"2015-07-11 12:30";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Shanghai"]];
//转化为东八区的时间,即背景时间
NSLog(@"北京时间 %@",[formatter stringFromDate:[NSDate date]]);
可以通过timeZoneNames数组查询各个时区的名字,都是以各大洲划分的。
- 某一时区时间转化为手机本地系统时间
- (void)day
{
NSString *startTime = @"2015-07-11 12:30";
NSDateFormatter *dateformatter=[[NSDateFormatter alloc] init];
[dateformatter setDateFormat:@"yyyy-MM-dd HH:mm"];
NSDate *startDate = [dateformatter dateFromString:startTime];
NSDate *startTime = [self getNowDateFromatAnDate:startDate];
NSString *startDateStr = [dateformatter stringFromDate:startTime];
NSLog(@"%@",startDateStr);//这是最终转好的时间
}
- (NSDate *)getNowDateFromatAnDate:(NSDate *)anyDate
{
//设置源日期时区
NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];//或GMT
//设置转换后的目标日期时区
NSTimeZone* destinationTimeZone = [NSTimeZone localTimeZone];
//得到源日期与世界标准时间的偏移量
NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:anyDate];
//目标日期与本地时区的偏移量
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:anyDate];
//得到时间偏移量的差值
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
//转为现在时间
NSDate* destinationDateNow = [[NSDate alloc] initWithTimeInterval:interval sinceDate:anyDate];
return destinationDateNow;
}