2011-05-27 126 views
1

我在將日期轉換爲字符串和字符串時遇到了問題。將nsstring轉換爲nsdate時的問題並反之亦然

代碼是:

NSDate *date=[NSDate date]; 
NSDateFormatter *formatter=[[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"dd/MM/YYYY"]; 
NSString *dateString=[formatter stringFromDate:date]; 

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"dd/MM/YYYY"]; 
NSDate *date2 = [dateFormat dateFromString:dateString]; 

在打印時則顯示所述不同的日期。 請幫助我

+0

您可以發佈正在顯示請輸出日期?謝謝。 – 2011-05-27 08:58:00

+0

datestring是:27/05/2011 date2是:2011-05-26 18:30:00 + 0000.I只需要27/05/2011。 – SRI 2011-05-27 09:40:01

回答

1

NSDate總是以GMT格式返回。所以date2是正確的。它在GMT。你可以認爲它是27/05/2011 00:00:00 +0530 IST。這沒有什麼錯。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"dd/MM/YYYY"]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"IST"]]; 
NSLog(@"%@", [dateFormat stringFromDate:date2]); 

這樣做應該在IST中返回。

您還可以得到date2這樣,

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSInteger flag = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit; 
NSDateComponents *dateComponents = [gregorian components:flag fromDate:[NSDate date]]; 
NSDate *date2 = [gregorian dateFromComponents:dateComponents];