How to Format Dates in Relative Format in Swift

Formatting dates to represent them in a relative format, like “Yesterday,” “Today,” or “Next Tuesday,” can greatly enhance the user experience in your Swift applications. In this guide, we’ll explore how to achieve this using Swift.

Step 1: Import Foundation

Before we get started, ensure you import the Foundation framework. This framework contains the DateComponentsFormatter class that we’ll use for relative date formatting.

import Foundation

Step 2: Create a Date Formatter

To format dates relatively, you need to create a DateComponentsFormatter instance. This class is designed to handle the differences between two dates and provide a user-friendly representation.

let formatter = DateComponentsFormatter()

Step 3: Configure the Formatter

Next, configure the DateComponentsFormatter to display the desired units, such as day, week, or month. You can also set the maximum and minimum unit counts.

formatter.allowedUnits = [.day, .weekOfMonth]
formatter.maximumUnitCount = 1
formatter.unitsStyle = .full

In this example, we configure the formatter to display relative time in days and weeks, with a maximum unit count of 1 (e.g., “1 week ago” or “2 days from now”). The unitsStyle property specifies that the time units should be displayed in a full format (e.g., “1 week” instead of “1w”).

Step 4: Format a Date

Now you can format a date using the configured DateComponentsFormatter. Simply provide two Date objects representing the start and end dates.

let currentDate = Date()
let targetDate = Calendar.current.date(byAdding: .day, value: -1, to: currentDate)

if let formattedString = formatter.string(from: targetDate!, to: currentDate) {
    print(formattedString)
}

In this code, we create currentDate as the current date and targetDate as a date one day in the past. We then use the formatter to generate a relative date string between these two dates.

Output Example

Suppose currentDate represents the current date and time, and targetDate is one day in the past. The output of the code will be:

1 day ago

Conclusion

Formatting dates in a relative format is a valuable feature for creating user-friendly interfaces in your Swift applications. By following these steps and using DateComponentsFormatter, you can provide users with clear and easily understandable representations of time intervals.

Whether you’re displaying “Yesterday,” “Next Tuesday,” or other relative date formats, this approach can greatly improve the user experience and comprehension in your app.

Start implementing relative date formatting in your Swift applications and make your app’s date displays more user-friendly than ever before.

A pat on the back !!