在 Objective-C 中的日期格式之间转换
Convert between date formats in Objective-C
我正在尝试将日期转换为不同的格式。我收到的日期是 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];
如John Skeet points out, the issue probably stems from the fact that IST
is not unique. IST stands for both Israel Standard Time, and India Standard Time。因此,当您指定印度语言环境时,它做出了合理的假设,但对于美国语言环境,它是可以理解的混淆。
无关,但请确保在输出格式化程序中使用 MM
而不是 mm
:
NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
[dateFormatter2 setDateFormat:@"dd/MM/yyyy"];
NSString *newDateString = [dateFormatter2 stringFromDate:dateFromString];
我正在尝试将日期转换为不同的格式。我收到的日期是 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];
如John Skeet points out, the issue probably stems from the fact that IST
is not unique. IST stands for both Israel Standard Time, and India Standard Time。因此,当您指定印度语言环境时,它做出了合理的假设,但对于美国语言环境,它是可以理解的混淆。
无关,但请确保在输出格式化程序中使用 MM
而不是 mm
:
NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
[dateFormatter2 setDateFormat:@"dd/MM/yyyy"];
NSString *newDateString = [dateFormatter2 stringFromDate:dateFromString];