This should focus on providing the best experience for dates which are in the past few weeks, simply relegating to a date formatter for older dates. This is "one-way" only--from an NSDate to a string. No need to write the other way around.
I have four projects that I've looked at, and each has strengths/weaknesses. I am good with dates, but I am running out of time so I need help with this. Nearly all of the logic that I want is already written, so this job would primarily be organizing it all into one standard class from these projects, and fixing any bugs that arise. We can talk about architecture, but I have a project that extends NSValueTransformer which seems like the best solution. Most localization is also already provided, but it would be your responsibility to test to ensure all necessary localizations are there, and provide an easy means of updating the missing parts.
Formatter should work like this (again, most of the code for this is written):
- Within one week, show day and time of day: "Very recently" "This afternoon" "This morning" "Yesterday night" "Last Thursday afternoon", etc.
- 2 weeks ago: "Week before last" is overly abstract. "Monday last week" works best if this can be localized. "Monday afternoon, last week" is better, but may be overly long.
- More than 2 weeks: I don't see the utility is saying "this year" as in "January this year". I think having the Month and Date here is more useful, like "January 14",
- not within this year: Month, DD, YYYY works.
The code should be clean, organized, extendable, and configurable. And most of all, support localization in every aspect. Usage of built-in classes is preferred (such as NSDateFormatter doesRelativeDateFormatting).