2012-03-30 33 views
1

所有,分手字符串在Objective-C

我有需要的日期(YYYY-MM-DD H:M:S)的方法從數據庫中,並創建一個URL用年,月,日期字符串中的日期組件。我的解決方案有效,但我想知道是否有更好的方法來做到這一點?那些酷酷的孩子如何做到這一點? :-)

謝謝!

-(NSString *) prettyURLFrom:(NSString *)dateString{ 



    NSString * URLString = @""; 
    NSString *URL = @"http://www.theblues.com/featured/article/"; 

    NSArray *myWords = [dateString componentsSeparatedByCharactersInSet: 
         [NSCharacterSet characterSetWithCharactersInString:@"-\" \" :"] 
         ]; 


    URLString = [NSString stringWithFormat:@"%@%@/%@/%@", 
        URL, 
        [myWords objectAtIndex:1], 
        [myWords objectAtIndex:2], 
        [myWords objectAtIndex:0]]; 



    return URLString; 


    } 
+0

你是從數據庫中檢索字符串或日期對象? – 2012-03-30 12:06:05

+0

是的。 sqlite3的。我想我知道你要去哪裏 - 在數據庫端格式化字符串,對吧? – Slinky 2012-03-30 12:11:22

+0

我想知道爲什麼你沒有通過日期作爲NSDate,並返回一個字符串,而不是一個NSURL。 – 2012-03-30 12:20:00

回答

1

就像我在評論中說,我覺得很奇怪的你傳遞和返回值作爲字符串時,他們可能應該分別NSDate和NSURL。

我可能會做這樣的事情:

-(NSURL*)URLFromDate:(NSDate*)date 
{ 
    // Assumes user uses a gregorian calendar 
    NSDateComponents *dateComp = [[NSCalendar currentCalendar] components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:date]; 

    return [NSURL URLWithString:[NSString stringWithFormat:@"http://www.theblues.com/featured/article/%li/%li/%li" 
            , [dateComp year] 
            , [dateComp month] 
            , [dateComp day]]]; 
} 
+0

是的,你是對的。會做你喜歡的事情。謝謝 – Slinky 2012-03-30 12:59:09

+0

只是爲了澄清,對於使用上面提供的示例的任何人 - 上面使用NSDateComponents的解決方案需要格式說明符%li,而不是%@ So:http://www.theblues.com/featured/article/%li/ %li /%li感謝所有人的幫助。 – Slinky 2012-03-30 13:07:44

1

如果你有NSDate對象,那麼你可以使用

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:date]; 

    NSInteger day = [components day]; 
    NSInteger month = [components month]; 
    NSInteger year = [components year]; 

的NSString的NSDate

[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"YYYY-MM-DD HH:MM:SS"]; 

NSDate *dateFromString = [[NSDate alloc] init]; 
dateFromString = [dateFormatter dateFromString:@"1999-07-02 2:2:4"];