I used the Date class such as "currentTime = Date()", but I get a date that is off by 5 hours exactly. How do I get the current time? Is there a time zone setting I have to set?
I think you are trying to do too much work.
Imagine that you have an old fashioned watch on your wrist, set to the correct time in the CMT time zone.
You are attacked by a ninja, who knocks you unconcious and puts you on a plane to Siberia.
You wake up, with no idea what the time difference is between CMT and whatever timezone this part of Siberia is in.
The ninja tells you that you will freeze to death in one hour.
If you look at the current time in CMT on your watch, can you figure out later exactly how much time you have left until that one hour is up? Or do you need to know the correct timezone you are in?
Instances of Date or NSTimer don't really care about the timezone, they only care about how much time passes.
So the current Date() doesn't need to know or care what a timezone is, it only cares how many seconds have passed since a specific point in time that it uses for reference. NSTimer doesn't need to know or care what a timezone is, it just needs to trigger the code when the right number of seconds have passed since that same specific point in time that it uses for reference.
The description property of a Date uses GMT when it converts itself to a string, which doesn't work so well for people who want to compare that date to their own timezone. That's why a DateFormatter can give you a localized string with the "correct" time, to display for users. But the Date itself isn't in GMT, it is just a reference to a number of seconds, which pass in the same amount of time no matter what the timezone is.