Swift version: 5.4
If you want to get a string from a
DateFormatter class has everything you need: you can get short dates, long dates, dates with times, and can even go the opposite way to give you a
Date from a string.
There are four primary ways you’re going to use it:
Dateinstance to a string using one of the built-in date formats.
Dateinstance to a string using one of the built-in time formats.
Dateinstance to a string using a completely custom format.
Below are examples of each to get you started.
First, this converts a
Date to a short date string using
let today = Date() let formatter1 = DateFormatter() formatter1.dateStyle = .short print(formatter1.string(from: today))
That will print something like “12/31/2019” depending on the user’s locale.
Second, this converts the same date to a medium time string using
let formatter2 = DateFormatter() formatter2.timeStyle = .medium print(formatter2.string(from: today))
That will print something like “20:27:32” or “8:27:32pm” depending on the user’s locale.
Third, this converts the same date to a date and time string using a custom date format:
let formatter3 = DateFormatter() formatter3.dateFormat = "HH:mm E, d MMM y" print(formatter3.string(from: today))
That will print something like “20:32 Wed, 30 Oct 2019”.
Finally, this attempts to convert a string to a date
let string = "20:32 Wed, 30 Oct 2019" let formatter4 = DateFormatter() formatter4.dateFormat = "HH:mm E, d MMM y" print(formatter4.date(from: string) ?? "Unknown date")
date(from:) returns an optional
Date because it might be given a string containing an invalid value, so that code uses nil coalescing to make sure there’s a default value printed.
SPONSORED Join a FREE crash course for iOS devs who want to become complete senior developers — from October 18th to 24th. Learn how to apply iOS app architecture patterns through a series of lectures and practical coding sessions.
Available from iOS 2.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.