2011-12-09 42 views
18

Tôi có một chuỗi theo thời gian trong giờ và tôi muốn làm cho nó theo múi giờ hệ thống nhưng nó không hoạt động đúng -NSDateFormatter và vấn đề múi giờ?

NSLog(@"Time Str = %@",Time); 

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"dd-MM-yyyy hh:mm a"]; 

[NSTimeZone resetSystemTimeZone]; 

NSLog(@"system time zone = %@",[NSTimeZone systemTimeZone]); 

[dateFormat setTimeZone:[NSTimeZone systemTimeZone]]; 

NSDate *date = [dateFormat dateFromString:Time]; 

[dateFormat setTimeZone:[NSTimeZone systemTimeZone]]; 
NSLog(@"date from string = %@",date); 
NSLog(@"string from date = %@",[dateFormat stringFromDate:date]); 

Output tại giao diện điều khiển -

/////// ////////////////////////////////////////////////// ///////////////////////////////////////

Thời gian Str = 09-12- 2011 07:57 AM

múi giờ hệ thống = Châu Á/Calcutta (IST) offset 19800

ngày từ chuỗi = 2011-12-09 02:27:00 +0000

chuỗi từ date = 09-12-2011 07:57

////////// ////////////////////////////////////////////////// //////////////////////////////////////

Calcutta là +5: 30 từ GMT, vì vậy thời gian trong ngày phải là 1:27 nhưng hiển thị của nó là 02:27. Ngoài ra khi tôi lấy một chuỗi từ ngày này nó cho thấy tôi sting cùng mà tôi sử dụng để làm cho ngày, tôi muốn chuỗi cập nhật theo múi giờ hệ thống.

Cảm ơn

+0

Nếu nên 2:27 vì 7:57-05:30 = 2:27, không 01:27. –

Trả lời

48

Nếu chuỗi ngày bằng GMT bạn không thể sử dụng múi giờ của hệ thống để tạo NSD từ NSString.

thay thế sự xuất hiện đầu tiên của [dateFormat setTimeZone:[NSTimeZone systemTimeZone]];

với [dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

+9

Nếu tôi muốn ứng dụng của mình hoạt động ở bất kỳ nơi nào trong bất kỳ múi giờ nào thì tôi nên làm gì? –

+0

bạn cần sử dụng múi giờ GMT chuẩn và chuyển đổi múi giờ thành múi giờ địa phương theo yêu cầu. – Aashish

Các vấn đề liên quan