【发布时间】:2011-03-21 17:22:18
【问题描述】:
我遇到了一个奇怪的情况:相同的代码在两个不同的项目中工作方式不同。一个项目只是带有此代码的空命令行实用程序。第二个项目是链接 gdata-objectivec-client 库。
代码如下:
static NSString * const dateFormat = @"MM/dd/yyyy HH:mm:ss Z";
NSString *tmp_string = @"03/08/2011 10:07:36 +0300";
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease] ;
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setDateFormat: dateFormat ];
NSDate *newDate = [dateFormatter dateFromString: tmp_string];
NSLog(@"dateFromThatString: %@", newDate);
在命令行实用程序中,结果是相同的
“2011 年 3 月 8 日 10:07:36 +0300”
.
但是在链接了gdata-objectivec-client的项目中,结果变成了
“2011 年 3 月 8 日 07:07:36 +0000”
我找不到什么问题,有什么建议吗?
【问题讨论】:
-
可能值得检查
dateFormatter的formatterBehavior属性,看看它是否相同。 -
我已经检查了这个属性,在这两种情况下它的值都是 0x410。
-
可能导致 newDate 对象是相同的,问题出在我的 NSLog 上?可能是它询问 NSDate 的不同描述,如果我确实询问了一个 desctiptionWithLocale:,那么它给出了我位置的文本描述的正确时间,但我不喜欢结果,因为我想要相同的字符串,就像它是在输入中,我希望位置以 +-HHHH 表示,但不在文本中
标签: objective-c formatting nsdate gdata nsformatter