日期格式化程序返回null

时间:2012-11-21 16:04:25

标签: ios date nsdateformatter

我总是从日期格式化程序中获取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];
  }
}
  1. 输出到日志:
    • 2012-11-21 10:00:41.650 Mobile_v2 [4093:f803]日期是11/21/2012 10:00:41 AM
    • 2012-11-21 10:00:41.651 Mobile_v2 [4093:f803]格式化日期为(null)
    • 2012-11-21 10:00:41.681 Mobile_v2 [4093:f803]日期不是日期。
  2. 有人能看出什么问题吗?我的日期格式不正确吗?

    我的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”

2 个答案:

答案 0 :(得分:1)

来自您的日志 summaryItem.SubmittedDate 对象不属于NSDate类。

首先记录该对象的类

NSLog(@"%@",  [summaryItem.SubmittedDate class]);

如果输出不是NSDate,那么在类的实现(.m文件)中有一些错误 宣布@property (nonatomic, retain) NSDate *SubmittedDate;

答案 1 :(得分:0)

我不建议您在解析JSON respnose bacause时使用NSDateFormatter从字符串转换为日期:

  1. 您必须设置正确的日期格式[df setDateFormat:@“MM / dd / yyyy”]。
  2. NSDateFormatter非常慢。
  3. 而是使用UNIX时间戳(1-1-1970之间的秒数)和

    -(id)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)seconds
    

    创建日期对象。