NSDateFormatter dateFromString return 空

NSDateFormatter dateFromString return null

我想从 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)

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

我试过你的问题

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);

我得到了这样的输出

使用下面的代码..

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSString *date_time  =  [dateFormatter stringFromDate:[NSDate date]];

希望这有用

试试这个代码

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];

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

下面是我的代码:

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

    formatter.dateFormat = format;

    NSDate *dateFromString = [formatter dateFromString:stringDate];

    return dateFromString; }

您的代码是正确的。

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

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