How to Convert NSDateComponents to String?

66 Views Asked by At
UNUserNotificationCenter.current().getPendingNotificationRequests { requests in
     for request in requests {
         
         let givenDate = request.trigger?.value(forKey: "dateComponents")
         print(givenDate ?? "")
     }
 }

<NSDateComponents: 0x282884930> { Calendar Year: 2022 Month: 7 Day: 12 Hour: 12 Minute: 23

How can I convert this to a more readable format: "12 Jul 2022, 12:23 AM"?

1

There are 1 best solutions below

0
YodagamaHeshan On

NSDateComponents is not a Date.As the name suggests, NSDateComponents has pieces of a date.

    let dateComponents = NSDateComponents()
    dateComponents.day = 4
    dateComponents.month = 5
    dateComponents.year = 2017

if you want to convert it to a Date(), you need to depend on a calendar.

And then use a date formatted to format it as you want.

    //Use any calender 
     if let gregorianCalendar = NSCalendar(calendarIdentifier: .gregorian),
        let date = gregorianCalendar.date(from: dateComponents as DateComponents) {
        
        let dateFormatter = DateFormatter()
       //Use any formatted 
        dateFormatter.dateFormat = "dd MMM yyyy, HH:mm:ss"
            
        let formattedDate = dateFormatter.string(from: date)
        print(formattedDate)
    }