日期格式问题IOS

时间:2014-10-06 05:31:10

标签: ios

请帮帮我。

我在字符串中的日期为“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月作为输出 此代码适用于所有其他日期。

4 个答案:

答案 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);