According to Technical Q&A QA1480:
if you're working with fixed-format dates, you should first set the locale of the date formatter to something appropriate for your fixed format. In most cases the best locale to choose is "en_US_POSIX", a locale that's specifically designed to yield US English results regardless of both user and system preferences.
So, to prevent date from being interpreted using device's regional settings you need to set locale
property of your DateFormatter
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "hh:mm a"
let date = formatter.date(from: "6:00 am")
Note: it's important you set locale
before you set dateFormat