Go&#x27;s &quot;time&quot; library is deceptively simple. Time, in real life, is quite incredibly complex, and hiding that complexity from developers (as Go&#x27;s library does) does them a great disservice.<p>To start with, there are actually two distinct notions of time: monotonic and wall-clock. In monotonic time, you want to measure time intervals with high accuracy: a second of monotonic time should correspond as much as possible to the physical span of a second (in the inertial frame of reference of the computer in question, because screw relativity). More importantly, when it&#x27;s not possible to correspond that time, you at least want guarantees like &quot;time never ticks backwards.&quot; In contrast, wall-clock time is about matching a (there&#x27;s more than one, and the definitions can and do change unpredictably, possibly even retroactively) civil reference clock as accurately as possible.<p>If you mix those two notions of time, you can evidence problematic results--changing the system clock five months back, for example, caused my music player to suddenly stop playing music (most likely because a callback timer was scheduled on wall-clock time and therefore would be waiting a few hundred days to start playing again).<p>Which brings into the next obvious problem: leap seconds. Any span of time greater than 1 second is actually an ill-defined span of time in that it can have multiple values. Once every few years, a minute has 61 seconds (theoretically, it can also have 59, but that hasn&#x27;t happened yet in practice). So if you&#x27;re requesting to add a minute, do you really mean &quot;add 60 seconds&quot; or do you mean &quot;add 1 to the minutes field&quot;? POSIX (and anyone else who counts time as seconds since an epoch) opted to handle leap seconds by pretending they don&#x27;t exist, which causes leap seconds to be so dangerous that, for example, the NYSE stopped trading for about an hour around the last leap second to avoid problems. I can personally attest to seeing date&#x2F;time parsers choking on leap seconds. And it&#x27;s not entirely clear if leap seconds actually exist in civil time in some jurisdictions, because there is a small amount of vagueness in the laws.<p>While on the topic of the differences between jurisdictions, do also note that, for historical dates, you really need to think about the difference between Julian and Gregorian calendars, as well as the fact that the date of adoption of the Gregorian calendar varies from country to country (thanks Protestant Reformation!). Oh, and the year didn&#x27;t necessarily start on January 1, either, and the change from March 1 to January 1 happened differently for different countries and differently from the Julian-&gt;Gregorian adoptions.<p>Time is hideously complicated.