Humans (thats you and I) don't think mathematically. Sometimes it is necessary to present them values in a natural format. This is especially relevant to date values, if I were to say to you "My birthday is on the 24th of April" (which it actually is!), it would take you time to compute how far in the future (or the past as the case may be) this is. If I were to say to you "My birthday is in 13 days" (at the time of writing this), it would aid your comprehension of when this event occurs.
As developers we have a responsibility to the users of our products to make their life as easy as possible; however many developers insist on displaying dates and times in rigid formats. Of course, rigid formats do have their uses, if I were developing a transactional based system for use in the banking industry, and I were displaying a large list of transactions to the user, then it is necessary to display the exact date and time on which a particular transaction occurred.
However, if I am writing a comment system for a blog, then I don't need to give the same level of detail, why display the date and time an item was posted to a user and make them calculate how long ago the post was made relevant to the current date and time? This is where human readable dates come in, as humans our brains process time spans a lot better than we do dates; if I were to state "A comment was posted on my blog 18 minutes ago" the human brain can digest this information readily, as it involves no calculations. The below class allows us to process DateTime values into human readable values. I would like to state this is not my code, I downloaded it from the internet some time ago, unfortunately I can't remember where it was downloaded from and thus cannot give credit to the original author; I have simply modified the code to make use of Generic's and make it compatible with version 4 of the .NET framework.
We can now use this class in our application:
I have attached an image showing the output from this example application.