您的位置:首页 > 移动开发 > IOS开发

iOS中对时间的处理(三)——各时区时间相互转化

2015-07-11 17:15 495 查看
手机本地系统时间转化为指定时区时间

[code]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数组查询各个时区的名字,都是以各大洲划分的。

某一时区时间转化为手机本地系统时间

[code]- (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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: