//NSString *compileDate = [NSString stringWithFormat:@"%s", __DATE__];
NSString *compileDate = [NSString stringWithUTF8String:__DATE__];
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
[df setDateFormat:@"MMM d yyyy"];
//[df setDateFormat:@"MMM dd yyyy"];
NSDate *aDate = [df dateFromString:compileDate];
Ok, I give up. Why would aDate sometimes return as nil?
Should it matter if I use the commented-out lines... or their matching replacement lines?
It can return nil if the phone's Region setting is not US (or equivalent).
Try setting the formatter's locale to en_US:
Slightly modifying DyingCactus' answer for ARC enabled code (for easier copying-n-pasting):