2012-01-17 68 views
1

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

在此先感谢!

回答

0

要摆脱NSDateFormatter的自动调整您的时区使用这样的东西。

dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; 

详细说明; “16 Jan 2012”不包含小时,分钟或秒钟值,所以当使用NSDateFormatter解析时,人们会期望一个描述为“2012-01-16 00:00:00 +000”的NSDate但是,这不是你得到的,因为日期格式化程序正在调整5:格林尼治标准时间和印度之间30小时?(假设根据:30差额)。通过显式设置日期格式化程序的时区,可以避免此问题。

+0

感谢NJones,这解决了我的第一个问题。但是我仍然不是得到该怎么做:我正在使用NSPredicate搜索将日期转换为秒的日期如下“Date == CAST(348345000.000000,”NSDate“)”并进行比较,即使我的记录包含日期为“2012年1月16日somehours:somemins:somesecs“它不符合标准。我希望包含日期为”2012年1月16日somehours:somemins:somesecs“的记录/数组应满足搜索标准。请问任何人都知道如何实现这一目标? – 2012-01-18 08:05:08

0

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

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

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

+0

我觉得OP有时区问题。 OP可以获得日期,但转换时间与时区有关。例如,如果你有时间16一月00:00,如果它与05:30的时区相减,那么结果日期将是15一月,时间将是18:30 – 2012-01-17 13:25:20