Question: I am using `NSDate` to measure execution of program. I create instance of `NSDate` at start and then at end create new instance endDate and call:

```
[startDate timeIntervalSinceDate: endDate]

```

This works fine, but I am interested what will happen if program starts executing before DST change, and finishes after. Will startDate be percived to be in future, and timeInterval method would return negative value?

Answer: 
I believe that NSDates are absolute points in time, and not effected by daylight savings time or time zones. For example, right now it is exactly the same point in time in New York city and in Beijing, even though because of time zones it might be 10 AM in New York and 10 PM in Beijing. A minute after the switch from DST to ST will be a minute later than before, even though your clock might read 59 minutes earlier. So I think that if you generate your dates using [NSDate date] you will always get the the correct time interval.

You could test it by setting your device's date to just before the switch to (or off of) DST and logging the interval using a start date before the switch and an end date after the switch.
It would seem that what Darren has implied is true. NSDate is a reference to an interval from an absolute reference date, January 1, 2001 00:00 GMT. So the class method `[NSDate date]` will return a representation of that interval. So the date will not be percived to be in the future.