我即将提出这个问题作为苹果支持的错误,但是需要很长时间才能得到他们的回复所以...我想问这里。
调试应用程序,我在时区之间使用一些dateTime转换。 我得到以下奇怪的行为,我想知道是否有其他人已经看到这个,并知道如何解决它。
Xcode 8.3.2
您可以看到GMTDate显示2个完全不同的日期/时间值(它们甚至不是相关的值),并且很难知道哪个是正确的。 我重新启动了Xcode /计算机等,但仍然一样!
- (NSString*) convertToDeviceTime:(NSString*) GMTDate {
//create the formatter for parsing
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//parsing the string and converting it to NSDate
NSDate *myGMTDate = [df dateFromString: GMTDate];
//create the formatter for the output
NSDateFormatter *out_df = [[NSDateFormatter alloc] init];
[df setTimeZone:[NSTimeZone systemTimeZone]];
[out_df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//output the date
NSString *myDeviceDate =[out_df stringFromDate:myGMTDate];
NSLog(@"the date is %@",myDeviceDate);
return myDeviceDate;
}
下面的新截图 - 这对Xcode来说有点不对劲, “令牌”的真正价值。快速显示,但调试器窗口显示为日期!奇怪的。我重新启动了Mac,仍然一样。
更新:所有NSString变量都在发生。只要我给它们写一个值,调试器窗口就会显示它们具有相同的日期值。如果我将它们打印到控制台或NSLog,则值会正确显示。
答案 0 :(得分:0)
找到了罪魁祸首。 在调试器中,“编辑摘要格式”弹出窗口我不知何故无意中粘贴了这个日期值,并且它显示了所有NSString值。
仅供参考:它不是特定于项目的,因此当我加载另一个项目时,它保留了“编辑摘要格式”字符串并将其应用于所有NSStrings。
感谢旧版SO帖子:Strange values displayed in Xcode debugger
附上截图!