xcode NSDateFormatter在configureView中返回null

时间:2012-02-11 00:35:08

标签: objective-c nsdate nsdateformatter

我正在尝试使用以下代码的NSDateFormatter。这是我的DetailViewController.m中的代码。我正在使用Xcode 4.2与故事板和核心数据。我在这里搜索了NSDateFormatter的其他主题,看起来好像我正确地做了这个但是结果返回null。

- (void)configureView
{
    // Update the user interface for the detail item.

    if (self.detailItem) {

        // Format Date to MMM D, YYYY H:MM:SS AM/PM
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
        [dateFormatter setTimeStyle:NSDateFormatterMediumStyle];

        NSString *sessDate = [[self.detailItem sessionDate] description];

        NSDate *date = [dateFormatter dateFromString:sessDate];
        NSString *formattedDate = [dateFormatter stringFromDate:date];

        self.sessionDate.text = formattedDate;

        NSLog(@"sessDate = %@",sessDate);
        NSLog(@"date = %@",date);
        NSLog(@"formattedDate = %@",formattedDate);
    }
}

NSLog结果:

2012-02-10 17:18:17.781 ClickIt[332:10103] sessDate = 2012-02-09 17:11:33 +0000
2012-02-10 17:18:17.782 ClickIt[332:10103] date = (null)
2012-02-10 17:18:17.782 ClickIt[332:10103] formattedDate = (null)

之前我使用过NSDateFormatter并且工作正常但是我很难理解为什么date变量返回null。关于我做错了什么的想法?

谢谢!


调整后的代码

    // Format Date to MMM D, YYYY H:MM:SS AM/PM
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
    NSString *sessDate = [[self.detailItem sessionDate] description];
    NSDate *date = [dateFormatter dateFromString:sessDate];
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
    [dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
    NSString *formattedDate = [dateFormatter stringFromDate:date];
    self.sessionDate.text = formattedDate;

1 个答案:

答案 0 :(得分:1)

我认为NSDateFormatterMediumStyle对应于这样的东西 - 1937年11月23日。因此你得到零值。

你能试试吗?

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];