1. 程式人生 > >iOS中對時間的處理(三)——各時區時間相互轉化

iOS中對時間的處理(三)——各時區時間相互轉化

  1. 手機本地系統時間轉化為指定時區時間
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陣列查詢各個時區的名字,都是以各大洲劃分的。

  1. 某一時區時間轉化為手機本地系統時間
- (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; }