I am trying to find out the difference between two date in seconds using Swift 4.1. This is the code I use,

```
func getDurationInSeconds(date1 :Date) -> Int{
    guard let durationInSeconds = Calendar.current.dateComponents([.second], from: Date(), to: date1).second else {
            return 0
    }
    return durationInSeconds
}

```

Function to generate date1 from 2018-10-09T18:19:00Z

```
func dateFromString(stringDate:String) -> Date? {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
        dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") as Locale?
        let date = dateFormatter.date(from: stringDate)
        return date
    }

```

The Date is always returning back an hour less than my current device time, so the calculation is not working as expected. If my current device time is 16:34 the Date() function returns it back as 15:34. 

I have seen that Date() is returning back the time in UTC not based on my timezone.

At the moment if I pass in a Date **09/10/2018 14:25:00** and the current device time is **09/10/2018 14:20:00**. I am expecting this function to return a value **300 which is 60 \* 5 minute difference between two dates**.

But I am getting back a value of **3900** which is because the date function returns the date as 

> 
> 09/10/2018 13:20:00 instead of 14:20
> 
> 
> 

. So the duration will be 1 hour + the 300 second difference.

Including a sample output from Xcode console, my device time when I executed this code was **2018-10-09 17:56:28.565423** 

```
(lldb) po date1
▿ 2018-10-09 17:59:00 +0000
  - timeIntervalSinceReferenceDate : 560800740.0

(lldb) po durationInSeconds
3731

(lldb) po Date()
▿ 2018-10-09 16:57:04 +0000
  - timeIntervalSinceReferenceDate : 560797024.35021996

(lldb)

```

But I cant find a proper way to find the correct duration between two times based on my current time zone. How can I do it?