2013-04-18 75 views
1

我想將日期字符串轉換爲另一種格式。我正在這樣做。NSDate沒有正確轉換

NSLog(@"datestring is NOW %@",_dayObject.p_date); 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"YYYY-MM-DD"]; 
NSDate *date = [dateFormat dateFromString:_dayObject.p_date]; 
NSLog(@"date transformed %@",date); 
[dateFormat setDateFormat:@"EEEE, dd/MM/YYYY"]; 
[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; 
NSString *dateStr = [dateFormat stringFromDate:date]; 
NSLog(@"datestring is AFTER %@",dateStr); 

但是,這是我從我的NSLOGs得到

2013-04-18 08:43:36.181 mosaqua2[9629:907] datestring is NOW 2013-05-04 
2013-04-18 08:43:36.184 mosaqua2[9629:907] date transformed 2013-01-03 23:00:00 +0000 
2013-04-18 08:43:36.184 mosaqua2[9629:907] datestring is AFTER donderdag, 03/01/2013 

我希望它是被

Saterday, 04/05/2013 

任何人可以幫助我嗎?

回答

2

使用我的轉換日期格式這種波紋管自定義的方法...

-(NSString *)changeDateFormat:(NSString*)stringDate dateFormat:(NSString*)dateFormat getwithFormat:(NSString *)getwithFormat{ 


    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
    [dateFormatter setDateFormat:dateFormat]; 

    NSDate *date = [dateFormatter dateFromString:stringDate]; 

    dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
    [dateFormatter setDateFormat:getwithFormat]; 

    NSString *convertedString = [dateFormatter stringFromDate:date]; 
    NSLog(@"Converted String : %@",convertedString); 
    return convertedString; 
} 

,並使用它像波紋管......

NSString *strSDate = [self changeDateFormat:_dayObject.p_date dateFormat:@"yyyy-MM-dd" getwithFormat:@"EEEE, dd/MM/yyyy"]; 
NSLog(@"datestring is AFTER %@",strSDate); 

My Blog這個帖子...

+1

This Works,thank you! – Steaphann 2013-04-18 07:12:47

0

檢查參數字符大小寫

NSLog(@"datestring is NOW %@",_dayObject.p_date); 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; //MODIFIED 
NSDate *date = [dateFormat dateFromString:_dayObject.p_date]; 
NSLog(@"date transformed %@",date); 
[dateFormat setDateFormat:@"EEEE, dd/MM/yyyy"]; //MODIFIED 
NSString *dateStr = [dateFormat stringFromDate:date]; 
NSLog(@"datestring is AFTER %@",dateStr); 
0

請嘗試..this也將努力獲得周名

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"eeee"]; 
NSCalendar * cal = [NSCalendar currentCalendar]; 
NSUInteger numWeekdays = [cal maximumRangeOfUnit:NSWeekdayCalendarUnit].length; 
NSDateComponents * comp = [[NSDateComponents alloc] init]; 
for(NSUInteger day = 1; day <= numWeekdays; day++){ 
[comp setWeekday:day]; 
[comp setWeek:0]; 
NSDate * date = [cal dateFromComponents:comp]; 

NSString * dayName = [dateFormat stringFromDate:date]; 

NSLog(@"%@", dayName); 
} 
1

入住這.....

NSLog(@"datestring is NOW ==>> %@", _dayObject.p_date); 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"yyyy-MM-dd"]; 
[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; 

NSDate *date = [dateFormat dateFromString: _dayObject.p_date]; 
NSLog(@"date transformed ==>> %@",date); 
[dateFormat setDateFormat:@"EEEE, dd/MM/yyyy"]; 
[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; 
NSString *dateStr = [dateFormat stringFromDate:date]; 
NSLog(@"datestring is AFTER ==>> %@",dateStr); 
  • OUTPUT:〜

    datestring is NOW == >> 2013-05-04

    date transfo Rmed指== >> 2013年5月4日00:00:00 +0000

    datestring之後== >>週六,2013年4月5日

0

你沒事做,除了setTimeZone,評論你會得到你的輸出。

NSLog(@"datestring is NOW %@",_dayObject.p_date); 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"YYYY-MM-DD"]; 
NSDate *date = [dateFormat dateFromString:_dayObject.p_date]; 
NSLog(@"date transformed %@",date); 
[dateFormat setDateFormat:@"EEEE, dd/MM/YYYY"]; 
//[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; //NOT NEEDED 
NSString *dateStr = [dateFormat stringFromDate:date]; 
NSLog(@"datestring is AFTER %@",dateStr); 
0

改變這一點: 「YYYY」

爲: 「YYYY」

原因的錯誤,

這是一個常見的錯誤使用YYYY。 yyyy指定日曆年 ,而YYYY指定ISO 年曆中使用的年份(「年份周」)。在大多數情況下,yyyy和yyyy產生的數字相同,但它們可能不同。通常,您應該使用日曆年的 。