IS I AM DOING SOMETHING WRONG WITH NSDATEFORMATTER OR IS THIS A BUG

Tarun Kumar

Total Post:214

Points:1642
Posted by  Tarun Kumar
 743  View(s)
Ratings:
Rate this:

I'm trying to print out the date in a certain format: 

NSDate *today = [[NSDate alloc] init];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

[dateFormatter setDateFormat:@"yyyyMMddHHmmss"];

NSString *dateStr = [dateFormatter stringFromDate:today];

 

If the iPhone is set to 24 hour time, this works fine, if on the other hand the user has set it to 24 hour time, then back to AM/PM (it works fine until you toggle this setting) then it appends the AM/PM on the end even though I didn't ask for it: 

20080927030337 PM

 

Am I doing something wrong or is this a bug with firmware 2.1? 

Edit 1: Made description clearer 

Edit 2 workaround: It turns out this is a bug, to fix it I set the AM and PM characters to "": 

[dateFormatter setAMSymbol:@""];

[dateFormatter setPMSymbol:@""];

  1. Mikki Halpin

    Post:23

    Points:161
    Re: Is I am doing something wrong with NSDateFormatter or is this a bug

    The reason for this behaviour is Locale, set the correct Locale, Set the local of your NSDateFormatter to en_US_POSIX will fix this. It works for both 24-hour and 12 hour format. 

    On iPhone OS, the user can override the default AM/PM versus 24-hour time setting (via Settings > General > Date & Time > 24-Hour Time), which causes NSDateFormatter to rewrite the format string you set. From apple doc 

    Try this, 

    NSDate *today = [[NSDate alloc] init];

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];

    [dateFormatter setDateFormat:@"yyyyMMddHHmmss"];

    NSString *dateStr = [dateFormatter stringFromDate:today];

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!