DateFormatters are expensive to build, so we cache them. DateFormatters are useful, so we share that cache. DateFormatters are mutable, so we end up with hard-to-reproduce bugs. Here, we look at how to cache and share DateFormatters without the bugs that come from them being shared mutable state.