Как указывает dreamlax, если вы хотите, чтобы он поддерживал несколько форматов даты, вам придется вызывать его для каждого из этих форматов, пока один из них не совпадет.
Что касается вашего несоответствия по часовому поясу, часовой пояс для форматера по умолчанию равен текущему часовому поясу системы. Можете ли вы показать какой-нибудь код, который демонстрирует, как он отключается на час? Я не вижу ничего подобного.
Конечно, это тоже очень странная вещь. Вы знаете, что «SAT 8AM» означает «8 часов по местному времени в первую субботу после контрольной даты», верно? Так что это будет 3 января 1970 года. Это не значит «следующая суббота после сегодняшнего дня» или что-то в этом роде. Я могу представить некоторые странные случаи, когда это было бы полезно, но я хотел убедиться, что это именно то, что вы действительно хотели сделать.