NSDateFormatter错误从字符串转换日期

时间:2012-04-09 19:42:04

标签: objective-c nsdateformatter

我有一个NSString格式的日期,内容如下:29/02/2012 12:00:00 AM

我正在尝试将其转换为NSDate对象,以便使用以下方法进行比较:

    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"dd/MM/yyyy hh:mm:ss"];

但是当我使用dateFromString:方法时,我得到一个空值。

我缺少什么?

感谢。

- 编辑 -

    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"dd/MM/yyyy hh:mm:ss a"];

    NSLog(@"INFO -> Test Date: %@",[df dateFromString:testQuestions.endDate]);
    NSLog(@"INFO -> Test Date String: %@",testQuestions.endDate);

    if ([[df dateFromString:testQuestions.endDate] earlierDate:[NSDate date]])
    {
        currentTestIsBeingSolved = NO;
    }

日志:

2012-04-09 22:15:29.073 Otsuka On[27184:707] INFO -> Test Date: (null)
2012-04-09 22:15:31.816 Otsuka On[27184:707] INFO -> Test Date String: 29/02/2012 12:00:00 AM

编辑 -

正如@trudyscousin建议我开始一个新项目并添加了这个:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"dd/MM/yyyy hh:mm:ss a"];

    NSLog(@"INFO -> Test Date: %@",[df dateFromString:@"29/02/2012 12:00:00 AM"]);
...

现在我没有得到null,但日期不一样:

2012-04-09 22:26:19.189 TestDate[54705:207] INFO -> Test Date: 2012-02-28 23:00:00 +0000

日期是怎么回事?

Xcode中的任何配置?

感谢。

1 个答案:

答案 0 :(得分:3)

你用“AM”为日期和时间加上后缀的事实就是这样做的。你也必须提供这个:

@"dd/MM/yyyy hh:mm:ss a"