Search code examples
iosswiftdatetimeswift4.2dateformatter

Issue in formatting Date in swift 4


I am having a Issue in formatting Date in swift 4 The time HH:mm:ss getting wrong data, when formatting the source code is provided below.

    let dateFormatter : DateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd-MMM-yyyy HH:mm:ss a
    let date = Date()
    let dateString = dateFormatter.string(from: date)

I am getting result as : 11-Aug-2020 12:01:23 PM

If i am trying to convert the result of string date to date

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd-MMM-yyyy HH:mm:ss a" 
    let serverDate: Date = dateFormatter.date(from: dateString)! 

I am getting result as : 2020-08-11 06:31:39 +0000

Expected must be : 2020-08-11 12:01:23 +0000
But i am getting result as : 2020-08-11 06:31:39 +0000

If anyone know the solution, please give me a solution.


Solution

  • HH:mm:ss gives you the time in 24 hour format, so a doesn't make sense inside the format. Or you can use hh:mm:ss a.

    Date() gives you the time in UTC. You need to provide the timezone information to get the date in your timezone.

        let date = Date()
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "dd-MMM-yyyy HH:mm:ss"
        dateFormatter.timeZone = .current
        let localDate = dateFormatter.string(from: date)
        
        print(localDate)
    

    localDate will give you the date in your current timezone.