How to convert a Persian date into a Gregorian in swift

For Swift 5: Format is little change for year

let formatter = DateFormatter()
formatter.dateFormat = "dd/MM/YYYY"
formatter.calendar = Calendar(identifier: .gregorian)
let date = Date()
let dateInGrogrian = formatter.string(from: date)

print(dateInGrogrian)

formatter.calendar = Calendar(identifier: .persian)
formatter.dateFormat = "dd/MM/YYYY"
print("Converted date to Hijri = \(formatter.string(from: date))")

Update for Swift 3:

let formatter = DateFormatter()
formatter.dateFormat = "dd/MM/yyyy"
formatter.calendar = Calendar(identifier: .gregorian)
let date = Date()
print("Converted date to Grogrian = \(formatter.string(from: date))")
        
formatter.calendar = Calendar(identifier: .persian)
formatter.dateFormat = "yyyy/MM/dd"
print("Converted date to Hijri = \(formatter.string(from: date))")

Here are alternatives:

  • era: G (AD), GGGG (Anno Domini)
  • year: y (2018), yy (18), yyyy (2018)
  • month: M, MM, MMM, MMMM, MMMMM
  • day of month: d, dd
  • day name of week: E, EEEE, EEEEE, EEEEEE

I run into issue because I am running swift 2 NOT 3.(I am updatingXcode now)

here is the fix for the code above for people to see the changes from Swift 2 to Swift 3

import UIKit

let formatter = NSDateFormatter()
formatter.dateFormat = "yyy/MM/dd"
formatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
let date = NSDate()
let dateInGrogrian = formatter.stringFromDate(date)

print("Date in Grogrian = \(dateInGrogrian)")

formatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierPersian)
formatter.dateFormat = "yyy/MM//dd"
print("Converted date to Jalali = \(formatter.stringFromDate(date))")

Tags:

Ios

Date

Swift