如何将NSString转换为NSDate?

时间:2012-01-17 13:00:01

标签: objective-c nsdate nspredicate

我想搜索我的字典数组中的特定日期。我想搜索我的数组字典中的日期"16 Jan 2012",这是字符串格式但我的数组中的字典项包含日期和时间,比如{{ 1}}。我正在转换NSDate格式的字符串格式日期,但我的日期为"16 Jan 2012 somehours:somemins:somesecs"而不是2012-01-15 18:30:00 +0000。我正在使用NSPredicate搜索将日期转换为秒的日期,如下所示{{ 1}}并进行比较,即使我的记录包含日期为2012-01-16,它也不满足条件。我希望包含日期"Date == CAST(348345000.000000, "NSDate")"的记录/数组符合搜索条件。请任何人都知道如何实现这个目标?

提前致谢!

2 个答案:

答案 0 :(得分:0)

您需要使用NSDateFormatters将日期字符串从一种格式转换为另一种格式。您可以使用inputDateFormatter,使用dateFromString为您提供NSDate,然后将其提供给outputDateFormatter,它提供您想要的字符串。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd MMM yyyy"];
NSString *dateInFormatYouWant = [dateFormatter stringFromDate:yourDate]

我不确定是否有比这更有效的方法。

答案 1 :(得分:0)

为了摆脱NSDateFormatter自动调整你的时区,请使用类似的东西。

dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];

详细说明; “16 Jan 2012”不包含小时,分钟或秒值,因此在使用NSDateFormatter进行解析时,可能会期望NSDate的描述为“2012-01-16 00:00:00 +000”但这不是你的'因为日期格式器正在调整GMT和印度之间的5:30小时?(假设基于:30差异)。通过明确设置日期格式化程序的时区,可以避免此问题。