我总是从日期格式化程序中获取null。我在其他所有问题中都尝试了一些例子并没有帮助。
NSLog(@"Date is %@", summaryItem.SubmittedDate);
NSLog(@"Formatted Date is %@", [df stringFromDate: summaryItem.SubmittedDate ]);
BOOL isDate = [summaryItem.SubmittedDate isKindOfClass: [NSDate class]];
NSLog(@"Date %@ a date.", isDate ? @"is" : @"is not");
查看SubmittedDate的定义
@property (nonatomic, retain) NSDate *SubmittedDate;
我正在初始化Date Fomatter
- (void) initDateFormatter {
if( df == nil ) {
df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"MM/dd/yyyy"];
[df setDateStyle:NSDateFormatterShortStyle];
}
}
有人能看出什么问题吗?我的日期格式不正确吗?
我的SBJson类中的代码
NSString *newDate = (NSString *)[receivedObjects objectForKey:@"SubmittedDate"];
NSDate *submittedDate = [df dateFromString:newDate]; //(NSDate *)
if ((NSNull *) submittedDate == [NSNull null]) {
self.SubmittedDate = nil;
} else {
self.SubmittedDate = submittedDate;
}
实际值是“11/21/2012 10:47:54 AM”
答案 0 :(得分:1)
来自您的日志 summaryItem.SubmittedDate 对象不属于NSDate类。
首先记录该对象的类
NSLog(@"%@", [summaryItem.SubmittedDate class]);
如果输出不是NSDate,那么在类的实现(.m文件)中有一些错误
宣布@property (nonatomic, retain) NSDate *SubmittedDate;
。
答案 1 :(得分:0)
我不建议您在解析JSON respnose bacause时使用NSDateFormatter从字符串转换为日期:
而是使用UNIX时间戳(1-1-1970之间的秒数)和
-(id)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)seconds
创建日期对象。