1

我总是从日期格式化程序中得到一个空值。我在所有其他问题中都尝试了示例,但没有帮助。

 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;

我正在初始化日期格式器

- (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] 日期是 2012 年 11 月 21 日上午 10:00:41
    • 2012-11-21 10:00:41.651 Mobile_v2[4093:f803] 格式化日期为 (null)
    • 2012-11-21 10:00:41.681 Mobile_v2[4093:f803] 日期不是日期。

任何人都可以看到有什么问题吗?我的日期格式不正确吗?

我的 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;
}

实际值为“2012 年 11 月 21 日上午 10:47:54”

4

2 回答 2

1

从您的日志 中, summaryItem.SubmittedDate对象不属于 NSDate 类。

首先记录该对象的类,

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

如果输出不是 NSDate, @property (nonatomic, retain) NSDate *SubmittedDate;则声明的类中的实现(.m 文件)有问题。

于 2012-11-21T16:27:13.177 回答
0

我不建议您在解析 JSON 响应时使用 NSDateFormatter 从字符串转换为日期,因为:

  1. 您必须设置正确的日期格式 [df setDateFormat:@"MM/dd/yyyy"]。
  2. NSDateFormatter 非常慢。

而是使用 UNIX 时间戳(从 1970 年 1 月 1 日开始的秒数),并且,

-(id)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)seconds

创建日期对象。

于 2012-11-21T17:05:12.697 回答