繁体   English   中英

具有时区的日期时间对象在目标C应用程序开发中不起作用

[英]Date time object with time zone not working in objective C app development

我正在遵循目标-C代码。 dateServer和dateClient显示相同的值,但实际上它们应该不同,因为timeDiff变为null。

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]);

最后,除了指定的字符串之外,新的日期即将到来。 为什么会这样,我只想将字符串转换为日期。 任何人都可以提出这两个地方可能出什么问题的建议。 提前致谢。

使用下面的代码

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

[NSD日期]; 给你当前时间。 因此,您正在比较dateClient和dateServer之间的timeInterval,这两者都携带当前时间。 这就是timeDiff结果为零的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM