-1

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

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

4

2 回答 2

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
于 2012-06-28T13:32:24.947 回答
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];
于 2012-06-28T13:30:12.250 回答