我有一个日期字符串,就像这个@"dd/mm/yyyy"
一样,我希望将这个字符串分成3个小字符串,包括日,月和年。我使用这段代码成功完成了这一天:
self.dayLabel.text = [string substringToIndex:2];
但是如何获得中间值,比如月份?
答案 0 :(得分:5)
试试这个:
NSString *string = @"dd/mm/yyyy";
NSArray *components = [string componentsSeparatedByString:@"/"];
NSString *day = components[0];
NSString *month = components[1];
NSString *year = components[2];
答案 1 :(得分:2)
有许多方法可以使用NSString / ObjC解析字符串
但是,如果您的输入数据总是相同,这可能是获取月份的最快方式:
NSString *monthString = [timestampString substringWithRange:NSMakeRange(3,2)];
你应该看看NSScanner。
答案 2 :(得分:2)
为什么不将包含您日期的NSString
转换为NSDate
个实例,然后使用NSDateComponents
课程获取如下所示的年/月/日。
NSString *dateString = @"01/01/2012"; // Our initial date as a string
// Set the instance of the Date Formatter up and set the format of the date we want
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
// Set an instance of the date class up and convert the string value of our dateString to an actual date
NSDate *dateVal = [[NSDate alloc] init];
dateVal = [dateformatter dateFromString:dateString];
// Set the instance of the Date Components class up and specify the components we want and from what date value
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:dateVal];
// Get the year/month/day as ints
int year = [components year];
int month = [components month];
int day = [components day];
// Then using the stringWithFormat: method we can set the int values to the correct label as a string
self.dayLabel.text = [NSString stringWithFormat:@"%d", day];
self.monthLabel.text = [NSString stringWithFormat:@"%d", month];
self.yearLabel.text = [NSString stringWitjFormat:@"%d", year];
对于您可以给出的不同日期格式,例如DD/MM/YYYY
或MM/DD/YYYY
或YYYY/MM/DD
等,这种方式可能最适合您,所以如果只是解析字符串你可能最终得到随机值,所以最好将它转换为NSDate
实例总是具有相同的日期格式,因为它会将所有不同的格式转换为一个,所以你知道你得到的值是一个你想要的。