Reputation: 175
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.
Upvotes: 0
Views: 510
Reputation: 1051
The problem is in your format. If you try with dateFormat = "dd-MMM-yyyy HH:mm:ss"
, you will get expected results. Also, I recommend you to set locale and timezone. For example:
let dateFormatter: DateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.timeZone = NSTimeZone.local
dateFormatter.dateFormat = "dd-MMM-yyyy HH:mm:ss"
let date = Date()
let dateString = dateFormatter.string(from: date)
let serverDate: Date = dateFormatter.date(from: dateString)!
Upvotes: 1
Reputation: 943
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.
Upvotes: 2