RJ168
RJ168

Reputation: 1046

How To Get The Current Date From Device?

I am facing a weird problem with NSDate, when I try fetch a date from device, sometimes it shows previous month for some versions

Here is my chunk of code for reference

    NSDate *date = [NSDate date];
    NSDateFormatter *dateF = [[NSDateFormatter alloc]init]; 
    [dateF setDateFormat:@" dd.MM.yyyy "];  
    NSString *selectedDate = [dateF stringFromDate:date];

Any inputs are appreciated, Thank you

Upvotes: 0

Views: 2735

Answers (3)

jbat100
jbat100

Reputation: 16827

This is an example by Apple so it looks like you have your upper-case / lower-case right

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd 'at' HH:mm"];

Are you sure your device's date is set right? Also have you tried setting the locale of the NSDateFormatter?

EDIT:

To address you question in comments: NSDate is a point in time irrespective of time zones, calendars and so so on. NSCalendar and NSDateFormatter allow you to convert this point in time into a representation that is correct in a given time zone, with a given calendar.

Upvotes: 0

Minakshi
Minakshi

Reputation: 1433

        NSDate *today = [NSDate date];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"hh:mma dd/MMM"];
NSString *dateString = [dateFormat stringFromDate:today];
NSLog(@"date: %@", dateString);
[dateFormat release];

Upvotes: 2

HyLian
HyLian

Reputation: 5093

To avoid later localizing problems you might use NSCalendar and its method components:fromDate:

Something like this:

NSCalendar * calendar = [NSCalendar currentCalendar];
NSDateComponents * components = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit 
                                            fromDate:[NSDate date]];
NSString * stringDate = [NSString stringWithFormat:@"%d.%d.%d", components.day, components.month, components.year];

Upvotes: 3

Related Questions