在Objective-C中转换日期格式

在Objective-C中转换日期格式,objective-c,nsdateformatter,ios8.1,Objective C,Nsdateformatter,Ios8.1,我正在尝试将日期转换为不同的格式。我正在以NSString格式接收我的日期:EEE MMM dd HH:mm:ss ZZZ yyyy,并试图将其更改为此格式:dd mm yy。但是,我无法获得所需的格式 这是我当前的代码: NSString *dateStr = [NSString stringWithFormat:@"%@",[dict valueForKey:@"createdOn"]]; [dateFormatter setDateFormat:@"EEE MMM dd

我正在尝试将日期转换为不同的格式。我正在以NSString格式接收我的日期:
EEE MMM dd HH:mm:ss ZZZ yyyy
,并试图将其更改为此格式:
dd mm yy
。但是,我无法获得所需的格式

这是我当前的代码:

    NSString *dateStr = [NSString stringWithFormat:@"%@",[dict valueForKey:@"createdOn"]];

    [dateFormatter setDateFormat:@"EEE MMM dd HH:mm:ss zzz yyyy"];
    NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"IST"];
    dateFormatter.timeZone = gmt;
    dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
    NSDate *dateFromString = [dateFormatter dateFromString:dateStr];

    NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
    [dateFormatter2 setDateFormat:@"dd/mm/yyyy"];
    NSString *newDateString = [dateFormatter2 stringFromDate:dateFromString];

地区
en_US
不理解
IST
时区缩写。但是
en_IN
会:

NSString *dateStr = @"Tue Mar 24 08:28:48 IST 2015";

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE MMM dd HH:mm:ss zzz yyyy"];
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_IN"];
NSDate *dateFromString = [dateFormatter dateFromString:dateStr];
因此,问题可能源于
IST
不是唯一的。IST代表两者,和。因此,当您指定India locale时,它会做出一个合理的假设,但对于US locale来说,它是混乱的,这是可以理解的


不相关,但请确保在输出格式化程序中使用
MM
而不是
MM

NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
[dateFormatter2 setDateFormat:@"dd/MM/yyyy"];
NSString *newDateString = [dateFormatter2 stringFromDate:dateFromString];

你是如何得到格式的?年月日?也许可以试试“dd-MM-yyyy”。@Rob:我正在以字符串形式获取日期,格式为“Tue Mar 24 08:28:48 IST 2015”,我正在尝试将其更改为“dd-MM-yyyy”。我从字符串获取日期为零。在获得nil值后,无论dateFormatter2输出什么,它都是nil。