我从数据库中获取格式为 yyyy-MM-DD 的字符串的日期,然后将其转换为格式为 yyyy-MM-DD 的NSDate。并再次将其转换为字符串格式 dd-MM 。
但最后我以字符串格式得到日期,它显示在日期前一个月。
以下是我使用的代码:
NSDateFormatter *format=[[NSDateFormatter alloc]init];
NSDateFormatter *format2=[[NSDateFormatter alloc]init];
NSString *date;
[format setDateFormat:@"yyyy-MM-DD"];
[format2 setDateFormat:@"DD-MMM"];
dict=[[NSMutableDictionary alloc]init];
for(int i=0;i<[viewHistoryData count];i++)
{
dict=[viewHistoryData objectAtIndex:i];
date=[dict objectForKey:@"Date"];
NSLog(@"My date with out format = %@",date);
NSString *dateString =[format2 stringFromDate:[format dateFromString:date]];
NSLog(@"My date is = %@",dateString);
[tempArray addObject:dateString];
}
输出
2014-02-07 15:01:07.586 VirtualRunner-V3[3580:c07] My date with out format = 2014-02-07
2014-02-07 15:01:07.588 VirtualRunner-V3[3580:c07] My date is = 07-Jan
有人知道如何解决这个问题吗?
答案 0 :(得分:4)
您使用错误的占位符表示某一天的日期。您使用的是一年中的日期,范围从1 ... 365.所以而不是
[format setDateFormat:@"yyyy-MM-DD"];
使用
[format setDateFormat:@"yyyy-MM-dd"];
答案 1 :(得分:0)
格式DD
代表一年中的某一天,而不是一个月中的某一天,因此请将格式化程序更改为:
[format setDateFormat:@"yyyy-MM-dd"];
[format2 setDateFormat:@"dd-MMM"];
答案 2 :(得分:0)
更正两种格式。
[format setDateFormat:@"yyyy-MM-dd"];
[format2 setDateFormat:@"dd-MMM"];
但我认为,问题与时区有关。请使用以下格式。
[format2 setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT+0:00"]];