objective-c - NSDate 和 NSDateFormatter 返回无效的 CFStrinfRef

标签 objective-c ios nsdate nsdateformatter

我在使用 NSDate 和 NSDateFormatter 时遇到一个问题。

来自这个 NSString

NSString *startDate = @"Thu, 19 Apr 2012 13:09:56 +0000";

我将获得一个使用当前区域设置本地化的日期,例如“Thu, 19 Apr 2012 13:09”。 我已经详细说明了此代码,但“endDate”字符串返回 nil(在调试器中获取“无效 CFStringRef”)。

[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"];
NSDate *dateFromString = [dateFormatter dateFromString:startDate];

[dateFormatter setDateFormat:@"EEE dd MMM yyyy HH:mm"];
[dateFormatter setLocale:[NSLocale currentLocale]];

NSString *endDate = [dateFormatter stringFromDate:dateFromString];

问题在哪里?

亚历克斯。

最佳答案

代码似乎是在非美国语言环境中执行的。我使用非美国语言环境。我也有相同的 nil 输出。

看来我们需要在setDateFormat:之前setLocale:

下面的代码可以正常工作:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
NSLocale *usLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease];
[dateFormatter setLocale:usLocale];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"];

关于objective-c - NSDate 和 NSDateFormatter 返回无效的 CFStrinfRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10348226/

相关文章:

objective-c - 自定义自定义 UIView 类

ios - 如何让 UIButton 只出现在最后一个单元格中?

iphone - 打开通过 fbconnect 使用 sharekit 的 IOS 应用程序和/或来自 facebook 应用程序或 facebook 网站的 sharekit

iphone - 从推送打开我的应用程序时执行哪个回调

ios - 当前时间是否匹配某个时间范围?

ios - 字典键排序

objective-c - 如何设置另一个变量/UILabel 变量的引用变量?

android - OpenFL 从设备陀螺仪获取输入

ios - 来自 NSDate 的 NSDateComponents 产生了意想不到的结果

objective-c - NSDate 的不同实例指向相同的分配内存?