iOS中對時間的處理(三)——各時區時間相互轉化
阿新 • • 發佈:2019-01-02
- 手機本地系統時間轉化為指定時區時間
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;
}