iphone - How to sort NSArray with date time values? -


i have nsarray containing date/time nsstrings in following format:

2/2/2011 2:46:39 pm 2/4/2011 11:59:47 … 

where date represented month/day/year.

how sort nsarray making sure newest date/times @ top?

when you’re dealing dates, use nsdate instead of nsstring. also, it’s important consider time zone — web service provide dates in utc or other time zone?

you should first convert array of strings array of dates. otherwise, you’d converting string date whenever used comparison, , there more comparisons number of strings.

for example:

nsdateformatter *formatter = [[[nsdateformatter alloc] init] autorelease]; [formatter setdateformat:@"mm/dd/yyyy hh:mm:ss a"];  nsmutablearray *datearray = [nsmutablearray array]; (nsstring *datestring in array) {     nsdate *date = [formatter datefromstring:datestring];     if (date) [datearray addobject:date];     // if date nil, string wasn't valid date.     // add error reporting in case. } 

this converts array, array of nsstrings, datearray, mutable array of nsdates. date formatter uses system time zone. if want use utc time zone:

nsdateformatter *formatter = [[[nsdateformatter alloc] init] autorelease]; [formatter setdateformat:@"mm/dd/yyyy hh:mm:ss a"]; [formatter settimezone:[nstimezone timezonewithabbreviation:@"utc"]]; 

having done that, sorting array trivial:

[datearray sortusingselector:@selector(compare:)]; 

Comments

Popular posts from this blog

c# - how to write client side events functions for the combobox items -

exception - Python, pyPdf OCR error: pyPdf.utils.PdfReadError: EOF marker not found -