iPhone根据用户当前时区从时间戳设置时间

时间:2012-06-28 13:22:54

标签: iphone objective-c nsdate nsdateformatter

我需要在我的应用中设置时间。我从服务器(GMT)获得时间戳,我需要根据用户当前时区将该时间戳转换为日期。怎么可能?

NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970:@"1340907963"];

 NSDateFormatter *dFormat = [[[NSDateFormatter alloc] init] autorelease];
[dFormat setDateStyle:NSDateFormatterMediumStyle];

[dFormat setDateFormat:@"d.MM.yyyy"];

NSString *theDate = [dFormat stringFromDate:date];

这是我将时间戳转换为日期的方式。我得到了一些像2012年6月20日23:55这样的东西。但我的实际时间是18:55

2 个答案:

答案 0 :(得分:1)

您收到的值是使用

转换它的unix时间(自1970年以来的间隔)
NSString * timeStamp = @"1340907963";
NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970:timeStamp];

然后将其转换为字符串

NSDateFormatter *dFormat = [[[NSDateFormatter alloc] init] autorelease];
[dFormat setTimeZone:[NSTimeZone defaultTimeZone]];
[dFormat setDateFormat:@"dd.MM.yyyy HH:mm:ss zzz"]; 
NSString *theDate = [dFormat stringFromDate:date]; 
NSLog(theDate); // 28.06.2012 21:26:03 GMT+03:00

答案 1 :(得分:0)

试试这段代码:

NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970:@"1340907963"];

NSDateFormatter *dFormat = [[[NSDateFormatter alloc] init] autorelease];
[dFormat setTimeZone:[NSTimeZone systemTimeZone]];
[dFormat setDateStyle:NSDateFormatterMediumStyle];
[dFormat setDateFormat:@"d.MM.yyyy"];

NSString *theDate = [dFormat stringFromDate:date];