Home > Software design >  Date formatting in Swift
Date formatting in Swift

Time:10-04

I have time values in JSON like so:

             "start_date": "2018-04-20 9:00:00 -08:00",
             "end_date": "2018-4-20 12:00:00 -08:00"

I want to format the dates so that when I put them in a list, I can show for example:

Fri 4/20 9-12 PM

CodePudding user response:

Here's a quick sample on how to do this using date components:

func toDate(start: String, end: String) -> String {
   let dateFormatter = DateFormatter()
   dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z"
   let startDate = dateFormatter.date(from: start)!
   let endDate = dateFormatter.date(from: end)!

   let calendar = Calendar.current
   let startComp = calendar.dateComponents([.month,.day,.hour], from: startDate)
   let endComp = calendar.dateComponents([.month,.day,.hour], from: endDate)
   let startMonth = startComp.month!
   let startDay = startComp.day!
   let startHour = startComp.hour!
   let endHour = endComp.hour!

   dateFormatter.dateFormat = "a"
   let endTime = dateFormatter.string(from: endDate)

   dateFormatter.dateFormat = "E"
   let startDayString = dateFormatter.string(from: startDate)

   return "\(startDayString) \(startMonth)/\(startDay) \(startHour)-\(endHour) \(endTime)"
}
toDate(start: "2018-04-20 09:00:00 -0800", end: "2018-04-20 12:00:00 -0800")
Output: Fri 4/20 9-12 PM

You should read more on DateFormatter and experiment with it on your own. https://www.zerotoappstore.com/get-year-month-day-from-date-swift.html

  • Related