我有一個包含日期字符串像如何包含在iPhone SDK的日期數組排序
「9/15/2011 12:00:00 AM」數組「10/15/2011 12 :00:00 AM「,」11/16/2011 12:00:00 AM「
如何按降序排列此數組? 訂單應按年份先排序,然後按月排序,然後按日期排序,然後按時間排序。
請分享你的想法。 謝謝
我有一個包含日期字符串像如何包含在iPhone SDK的日期數組排序
「9/15/2011 12:00:00 AM」數組「10/15/2011 12 :00:00 AM「,」11/16/2011 12:00:00 AM「
如何按降序排列此數組? 訂單應按年份先排序,然後按月排序,然後按日期排序,然後按時間排序。
請分享你的想法。 謝謝
排序NSDates,而他們在的NSString格式幾乎是不可能的,除非他們的格式爲「YYYYMMDDHHMMSS」,您可以排序作爲字符串進行排序。請參閱@丹尼爾·希克斯答案。
將字符串轉換爲NSDate解析並添加Web服務中的日期。
NSString *dateStr = ...
NSDateFormatter *df = ;[NSDateFormatter alloc] init];
[df setDateFormat:@"M/dd/YYYY hh:mm:ss a"];
[datesArray addObject:[df dateFromString:dateStr]];
和分類,
[datesArray sortUsingSelector:@selector(compare:)];
非常感謝您的回答。再一次,我得到了答案像2011-11-15 18:30:00 +0000,但輸入是11/16/2011 12:00:00 AM。日期有所不同。我認爲那是因爲時間格式。無論如何要以12小時的格式獲得時間? – Mithun
您不必擔心iOS顯示日期的格式。它始終顯示相對於時區的日期。當您將日期轉換爲字符串時,您將獲得正確的值。不要擔心。 – EmptyStack
謝謝你,非常感謝你的時間。 – Mithun
static NSStringCompareOptions comparisonOptions = NSCaseInsensitiveSearch | NSNumericSearch |NSWidthInsensitiveSearch | NSForcedOrderingSearch;
NSLocale *currentLocale = [NSLocale currentLocale];
NSArray *sortArray = [iArray sortedArrayUsingComparator:^(id string1, id string2) {
NSRange string1Range = NSMakeRange(0, [string1 length]);
//if([string2 isEqualToString:@"#"])
//return -1;
return [string1 compare:string2 options:comparisonOptions range:string1Range locale:currentLocale];
}];
return sortArray;
有一種比較兩個日期的方法。
int interval = [date1 compare:date2];
if (interval == 1)
{
NSLog(@"Right hand side date is earlier");
}
else if (interval == -1)
{
NSLog(@"Left hand side date is earlier");
}
else
{
NSLog(@"Both Dates are equal");
}
您可以使用此方法,但請確保您的日期1和date2是NSDate的對象,並比較它們之後,你可以使用冒泡排序方法與它一起到數組排序。
如果它們已經是字符串,您可以將它們轉換爲NSDates(並因此轉換爲NSTimeIntervals)並對它們進行排序,或者有效地將數字重新排列爲YYMMDDHHmmss,其中HH已被轉換爲00-23表示。
可以通過使用sortUsingFunction調用來完成。
試講座敬愛的上市代碼。它會按升序排序。
NSMutableArray *arraydate=[[NSMutableArray alloc] init];
[arraydate addObject:@"22/7/2010"];
[arraydate addObject:@"1/1/1988"];
[arraydate addObject:@"22/7/1966"];
[arraydate addObject:@"22/7/2000"];
[arraydate addObject:@"1/7/2010"];
[arraydate sortUsingSelector:@selector(compare:)];
NSLog(@"array=%@",[arraydate description]);
最主要的是,當它們處於NSStrings格式時,您無法對NSDates進行排序。然後,[解決方案在這裏!](http://stackoverflow.com/questions/1132806/sort-nsarray-of-date-strings-or-objects/1134126#1134126) – EmptyStack
感謝您的答覆。我從Web服務獲取日期值,那麼如何將此字符串日期值轉換爲NSDate格式?可能嗎? – Mithun
我已將代碼更改爲NSdate,但從Web服務獲取的字符串格式與「2011年11月16日12:00:00 AM」類似。我怎樣才能轉換這一個? – Mithun