title: Human-readable duration between two UNIX timestamps
body: <p>I'm trying to calculate the difference between two UNIX timestamps (i.e. seconds since 1970). I want to say e.g. "3 years, 4 months, 6 days, etc" but I don't know how to account for leap years and months of different durations. Surely this is a solved problem..?</p>
  
  <p>This is different to other questions which want to express an approximate duration in one unit that has a fixed/homogeneous duration (e.g. 3 hours, or 7 weeks, etc.). Results for 1. Jan to 1. Feb would be "1 month" and results for 1. Feb to 1. Mar would also be "1 month" even though the number of days are different.</p>
  
  <p>I want to express the complete duration precisely but in years/months/days/hours/minutes. Solutions in C++ would be appreciated!</p>