0

I am a junior iOS developer. and now I have problem when converting string to date object.

I don't know why the result (date object) always 7 hour behind the actual string I input. currently I am in Indonesia (GMT + 7), I don't know, but maybe it is related to the place where I live. here is the code I use

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
    dateFormatter.locale = Locale(identifier: "en_US_POSIX")
    dateFormatter.timeZone = Calendar.current.timeZone
    let x = dateFormatter.date(from: "2018-07-18 12:00:00")
    print(x)


result: 2018-07-18 05:00:00 +0000

how to fix this? really need your help

sarah
  • 3,819
  • 4
  • 38
  • 80

1 Answers1

2

Your code is working very well. There is nothing wrong with it. The value printed is 100% correct.

Date objects do not store anything about time zones and when printed, it will always be in the GMT (UTC+0) time zone. This is why +0000 appears at the end of the printed string. Date objects represent a point in time. 12:00 in Indonesia is the same point in time as 05:00 in GMT.

So whenever you want to see the Date object as a string in your time zone, you need to use a DateTimeFormatter like you did here and set the timeZone of the formatter.

Sweeper
  • 213,210
  • 22
  • 193
  • 313