Статические переменные сохраняют свои присвоенные значения при повторных вызовах функции. Они в основном похожи на глобальные значения, которые только «видны» этой функции.
Однако оператор инициализатора выполняется только один раз.
Этот код инициализирует dateFormatter для нулевого значения при первом использовании функции. При каждом последующем вызове функции производится проверка значения dateFormatter. Если он не установлен (что будет истинно только в первый раз), создается новый dateFormatter. Если он установлен, вместо него будет использоваться статическая переменная dateFormatter.
Стоит ознакомиться со статическими переменными. Они могут быть очень удобными, но также имеют свои недостатки (в этом примере невозможно выпустить объект dateFormatter, например).
Просто подсказка: иногда бывает полезно установить точку останова в коде и посмотреть, что происходит. По мере увеличения сложности ваших программ это станет бесценным навыком.