请帮帮我。
我在字符串中的日期为“2014-12-31 00:00:00”
我正在使用以下功能将日期从一种格式转换为另一种格式。
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate * dateNotFormatted = [dateFormatter dateFromString:@"2014-12-31 00:00:00"];
[dateFormatter setDateFormat:@"MMM yy"];
[dateFormatter setCalendar:gregorian];
NSString * dateFormatted = [dateFormatter stringFromDate:dateNotFormatted];
dateFormatter = nil;
NSlog(@"Formatted Date %@", dateFormatted);
我收到的输出为格式化日期2015年12月。我应该格式化日期2014年12月作为输出 此代码适用于所有其他日期。
答案 0 :(得分:1)
我检查了你的代码。对于格里高利,我已经创建了像这样的变量
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
它正在运作。我得到输出:
Formatted Date Dec 14
请检查您的系统日期。
答案 1 :(得分:0)
我不确定您为gregorian
撰写的内容,但如果您希望完全按格式化日期2014年12月作为输出,那么您可能需要设置日历如下currentCalendar
:
[dateFormatter setDateFormat:@"MMM yyyy"]; //yyyy prints the year 2014
// [dateFormatter setCalendar:gregorian];
[dateFormatter setCalendar:[NSCalendar currentCalendar]];
答案 2 :(得分:0)
如果您特别想要公历,请使用以下内容:
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[dateFormatter setCalendar:cal];
否则[NSCalendar currentCalendar]
会更好。
使用上面明确的公历,你的代码似乎对我来说很好。我已经看到" 12月14日"作为输出日期。
答案 3 :(得分:0)
我尝试使用相同的代码在SetCalender Line中进行微小更改,并提供正确的输出,例如格式化日期12月14日,
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate * dateNotFormatted = [dateFormatter dateFromString:@"2014-12-31 00:00:00"];
[dateFormatter setDateFormat:@"MMM yy"];
[dateFormatter setCalendar:[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]];
NSString * dateFormatted = [dateFormatter stringFromDate:dateNotFormatted];
dateFormatter = nil;
NSLog(@"Formatted Date %@", dateFormatted);