Tuesday, November 9, 2010

How To Localize a "Timer" on iPhone

Programmer Question

I need to display a timer in "hh:mm:ss" format on the iPhone, but want it localized. Finland, for example uses a period instead of a colon between the time components (hh.mm.ss). Apple's NSDateFormatter would do the trick if I was dealing with a "time" but I need to display hours much greater than 24.



I have not been able to make an NSDate/NSDateFormatter work because when you make one with seconds...



NSDate *aDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTotalSeconds];


... every 86,400 seconds (one day's worth) NSDate automatically increments the day and hours, minutes, and seconds go back to zero. I need to make it work on an any number of seconds without rolling over. For example, with 86,401 seconds I want to display 24:00:01 (or 24.00.01 in Finland).



My code manages total seconds fine, so the only problem I have is the display. A simple...



[NSString stringWithFormat:@"%d%@%d%@%d", hours, sepString, mins, sepString, secs]


... would work if I could find a way to get at a localized "sepString" (the time component separator). NSLocale does not seem to have this.



Thoughts?



Find the answer here

No comments:

Post a Comment

LinkWithin

Related Posts with Thumbnails