This is cross-posted from the Hardfin engineering blog.
The Go standard library uses a single overloaded type as a stand-in for both full datetimes1 and dates. This mostly "just works", but slowly starts to degrade correctness in codebases where both datetime and date values need to interact.
We store …