&gt; What I&#x27;m trying to say is: even if you don&#x27;t like Go, take a look at how Go&#x27;s &quot;time&quot; library works. I think it would be valuable for other languages. Other languages can probably even do it better (imagining better type systems around units), but I&#x27;ve never seen an API that feels as right for manipulating time as Go&#x27;s time stdlib.<p>Then you might be interested in Joda-Time[1] and Boost.Date_time[2].  I&#x27;m not saying they are better or worse than Go&#x27;s time library.  They are quite powerful in their own right however.<p>Taking the example you presented:<p><pre><code>  take the more generic problem of: I have
  a time, I have a duration, how do I tell
  if that duration has passed?
</code></pre>
In Joda-Time, it could look like (all types are in org.joda.time):<p><pre><code>  new Interval (yourStartDate, theDuration).contains (
    candidate
    );
</code></pre>
And in Boost.Date_Time (loosely based on this example[3]):<p><pre><code>  date d = day_clock::local_day ();
  time_period allDay (ptime (d), ptime (d, hours (24)));

  if (allDay.contains (someTimeInstance)) { ... }
</code></pre>
1 - <a href="http:&#x2F;&#x2F;joda-time.sourceforge.net&#x2F;userguide.html" rel="nofollow">http:&#x2F;&#x2F;joda-time.sourceforge.net&#x2F;userguide.html</a><p>2 - <a href="http:&#x2F;&#x2F;www.boost.org&#x2F;doc&#x2F;libs&#x2F;1_59_0&#x2F;doc&#x2F;html&#x2F;date_time.html" rel="nofollow">http:&#x2F;&#x2F;www.boost.org&#x2F;doc&#x2F;libs&#x2F;1_59_0&#x2F;doc&#x2F;html&#x2F;date_time.html</a><p>3 - <a href="http:&#x2F;&#x2F;www.boost.org&#x2F;doc&#x2F;libs&#x2F;1_59_0&#x2F;doc&#x2F;html&#x2F;date_time&#x2F;examples.html#date_time.examples.time_periods" rel="nofollow">http:&#x2F;&#x2F;www.boost.org&#x2F;doc&#x2F;libs&#x2F;1_59_0&#x2F;doc&#x2F;html&#x2F;date_time&#x2F;exam...</a>