我正在尝试将日期转换为其他格式。我使用以下格式接收我的日期作为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];
答案 0 :(得分:2)
区域设置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];
作为John Skeet points out,问题可能源于IST
不是唯一的事实。 IST代表Israel Standard Time和India Standard Time。因此,当您指定印度语区域设置时,它会做出合理的假设,但对于美国语言环境,它可以理解为混淆。
不相关,但请确保在输出格式化程序中使用MM
而不是mm
:
NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
[dateFormatter2 setDateFormat:@"dd/MM/yyyy"];
NSString *newDateString = [dateFormatter2 stringFromDate:dateFromString];