0

我有以下目标-C代码。dateServer , dateClient 显示相同的值,但实际上它们应该不同,因为 timeDiff 为空。

NSDate *dateClient  = [NSDate date];

[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"PDT"]];
NSDate *dateServer = [NSDate date];

NSLog(@"dateServer=%@",[dateServer description]);
NSLog(@"dateClient=%@",[dateClient description]);

NSTimeInterval timeDiff = [dateClient timeIntervalSinceDate:dateServer];

NSString *dateStr = @"2012-09-21 05:34:24";

// Convert string to date object
NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
[formatter2 setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSDate *dateNew = [formatter2 dateFromString:dateStr];  
NSLog(@"date new %@" , [dateNew description]);

最后, date new 出现的不是指定的字符串。为什么会发生这种情况,我只想将字符串转换为日期。任何人都可以提出这两个地方可能出现的问题。提前致谢。

4

2 回答 2

1

使用下面的代码

NSDate* dateClient = [NSDate date];

NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"PDT"];
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];

NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:dateClient];
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:dateClient];
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;

NSTimeInterval

于 2012-09-21T12:14:40.347 回答
0

[NSD日期];正在给你当前时间。所以你正在比较 dateClient 和 dateServer 之间的 timeInterval,它们都带有当前时间。这就是 timeDiff 结果为零的原因。

于 2012-09-21T12:13:37.193 回答