NSDateFormatter没有正确格式化日期ios10

时间:2016-11-29 12:20:41

标签: ios objective-c

我正在尝试使用特定的格式来转换日期,并且只想从过去的日期获取日期,如下所示,但是获得了nil 我做错了什么?

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
    NSDate *date = [dateFormatter dateFromString: [dicValues valueForKey:@"DateNeeded"]];
    [dateFormatter setDateFormat:@"dd/MM/yyyy h:mm a"];
    NSString *strSubTitle = [[NSString alloc] initWithFormat:@"%@", [dateFormatter stringFromDate:date]];

我收到的日期是:2016-11-17T23:46:50.35,2016-11-28T21:25:20.927和2016-11-29T00:00:00

4 个答案:

答案 0 :(得分:1)

您需要转换

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

到这个

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"];

与日期字符串一样,您也会收到MilliSeconds

修改

此代码适用于我,请检查您从服务器获取的日期格式

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"];
    NSDate *date = [dateFormatter dateFromString: @"2016-11-28T21:25:20.927"];
    if (date == nil) {
        [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
        date = [dateFormatter dateFromString: @"2016-11-28T21:25:20.927"];
    }
    [dateFormatter setDateFormat:@"dd/MM/yyyy h:mm a"];
    NSString *strSubTitle = [[NSString alloc] initWithFormat:@"%@", [dateFormatter stringFromDate:date]];

答案 1 :(得分:0)

[dicValues valueForKey: @"DateNeeded"]为nil或与指定的格式"yyyy-MM-dd HH:mm:ss"不匹配。

答案 2 :(得分:0)

首先检查您收到的日期,格式为yyyy-MM-dd HH:mm:ss。如果没有,则根据您收到的日期制作此格式。

例如,您收到了日期29/11/16,那么您的代码将是这样的

[dateFormatter setDateFormat:@"dd/MM/yy"];
NSDate *date = [dateFormatter dateFromString: [dicValues valueForKey:@"DateNeeded"]];

获得约会后,将其转换为您想要的任何格式。

答案 3 :(得分:0)

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"];