title: Swift 3.0 : Convert server UTC time to local time and vice-versa
body: <p>I want to convert server UTC time to local time and vice-versa.
  Here is my code..</p>
  
  <pre><code>var isTimeFromServer = true
  var time:String!
  var period:String!
  let timeString = "6:59 AM" //Current UTC time
  
  if isTimeFromServer {
  
      let index = timeString.index(timeString.startIndex, offsetBy: 5)
      let twelve = timeString.substring(to: index)
  
      var dateString:String!
  
      let dateFormatter = DateFormatter()
      dateFormatter.dateFormat = "H:mm"
      let date12 = dateFormatter.date(from: twelve)!
  
      dateFormatter.dateFormat = "h:mm a"
      let date22 = dateFormatter.string(from: date12)
  
      //print(date22)
      dateString = date22
      //print("dateString=\(dateString)")
  
      time = dateString.components(separatedBy: " ")[0]
      period = dateString.components(separatedBy: " ")[1]
  
  }
  else {
      time = timeString.components(separatedBy: " ")[0]
      period = timeString.components(separatedBy: " ")[1]
  }
  
  var hour = Int(time.components(separatedBy: ":")[0])
  
  hour = period == "AM" ? hour : hour! + 12
  let minute = Int(time.components(separatedBy: ":")[1])
  let calender = NSCalendar.current
  var datecomponent = DateComponents()
  datecomponent.calendar = calender
  datecomponent.hour = hour
  datecomponent.minute = minute
  
  if !isTimeFromServer {
      // local to UTC
      datecomponent.timeZone = TimeZone.current
  }
  else {
      datecomponent.timeZone = TimeZone(abbreviation: "UTC")
  }
  
  let date = datecomponent.date
  let dateFormatter = DateFormatter()
  
  if !isTimeFromServer {
      dateFormatter.dateFormat = "H:mm"
      dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
      dateFormatter.string(from: date!)
  }
  else {
      //UTC to local
      dateFormatter.dateFormat = "h:mm a"
      dateFormatter.timeZone = TimeZone.current
      dateFormatter.string(from: date!)
  }
  </code></pre>
  
  <p>I get the local time </p>
  
  <blockquote>
    <p>o/p: "12:52 PM"</p>
  </blockquote>
  
  <p>But actual local time and output time difference is 23 minutes.</p>