NSDateFormatter dateFromString返回null

时间:2016-05-11 11:40:07

标签: ios objective-c nsdateformatter

我想从NSString获取NSDate。我的代码:

NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [dateFormatter dateFromString:@"2016-05-05 09:29:31"];
NSLog(@"date %@",date);

我在控制台看到了:

date (null)

我的日期格式有什么问题?谢谢。

5 个答案:

答案 0 :(得分:4)

您的代码是正确的。

如果设备设置为AM / PM时间并且请求的字符串格式设置为@" yyyy-MM-dd HH:mm:ss" dateFromString将返回nil。尝试设置区域设置,如:

[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];

答案 1 :(得分:2)

你也可以使用我的代码从NSString获取你想要的任何格式的NSDate。

以下是我的代码:

- (NSDate *)dateFromString:(NSString *)stringDate withFormat:(NSString *)format {
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

    formatter.dateFormat = format;

    NSDate *dateFromString = [formatter dateFromString:stringDate];

    return dateFromString; }

答案 2 :(得分:1)

我试过了你的问题

NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [dateFormatter dateFromString:@"2016-05-05 09:29:31"];
NSLog(@"newDate :  %@",date);

我得到了像

这样的输出

enter image description here

答案 3 :(得分:0)

使用以下代码..

ng-click

希望这很有用

答案 4 :(得分:0)

试试这段代码

NSString *dateString = @"05-05-2016 09:29:31";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

// if format doesn't match you'll get nil from your string, so be careful

[dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm:ss"];
NSDate *dateFromString = [[NSDate alloc] init];

dateFromString = [dateFormatter dateFromString:dateString];