Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting date from [NSDate date] off by a few hours

I am using

NSDate *date = [NSDate date];

for getting the date, but the date I get is off by 2 hours.

like image 821
YosiFZ Avatar asked Dec 11 '11 19:12

YosiFZ


2 Answers

NSDate objects don't have time zones. They represent an absolute moment in time. However, when you ask one for its description (by printing it with NSLog(), e.g.), it has to pick a time zone. The most reasonable "default" choice is GMT. If you're not in GMT yourself, the date will seem to be incorrect, by the amount of your own offset.

You should always use an NSDateFormatter to create a string for display. The formatter's timezone should be set to yours, which is the default.

like image 184
3 revs Avatar answered Oct 12 '22 22:10

3 revs


You can get your date corrected like this:

NSDate * dateGMT = [NSDate date];
NSTimeInterval secondsFromGMT = [[NSTimeZone localTimeZone] secondsFromGMT];
NSDate * correctDate = [dateGMT dateByAddingTimeInterval:secondsFromGMT];
like image 34
Florian Burel Avatar answered Oct 12 '22 23:10

Florian Burel