I have following strings as 12-Hr format time:
let timeFrom = "05:30 AM";
let timeTo = "04:35 PM";
And trying to get date from these for comparison as follows:
let openTime = timeFrom.date(format: "hh:mm a")
let closeTime = timeTo.date(format: "hh:mm a")
With this extension :
extension String
{
func date(format:String) -> Date?
{
let formatter = DateFormatter()
formatter.dateFormat = format
formatter.timeZone = NSTimeZone.local
return formatter .date(from: self)
}
}
When I print openTime and closeTime, I'm getting incorrect values in time:
print(openTime) // 2000-01-01 00:00:00 +0000
print(closeTime) // 2000-01-01 11:00:00 +0000
Why this is so ? I think it is smoething related to time zone, so I visit NSDateFormatter return wrong date + Swift, but nothing worked for me. If anybody have the solution, please help me. Thank you !
I check with swift 3 and Xcode 8 with small changes its working please check
let timeFrom = "05:30 AM";
let timeTo = "04:35 PM";
let openTime = timeFrom.date(format: "hh:mm a")
let closeTime = timeTo.date(format: "hh:mm a")
print(openTime)
print(closeTime)
and make change in extension
extension String{
func date(format:String) -> Date?
{
let formatter = DateFormatter()
formatter.timeZone = TimeZone(abbreviation: "GMT+0:00")
formatter.dateFormat = format
//formatter.timeZone = TimeZone.current //or autoupdatingCurrent
return formatter .date(from: self)
}}