SQLiteのも(my SO recent post on this topicを参照)、適切なネイティブの日付タイプを持っていない、との程度まであなたはSQLiteので日付を格納することができ、それを1年が経過しても意味をなさない。 NSDateを1年も持たなくても意味がないかどうかはわかりません。
個人的には、データベースに別々の数値フィールドとして3つのフィールドを1日、月、および年として保存して、その年が何歳であるのかわからない場合は空白にします。 @benzadoにより示唆されるようにこのように、単純なNSScannerを使用します。
int day;
int month;
int year;
NSScanner *scanner = [NSScanner scannerWithString:birthdayString];
if ([scanner scanInt:&month] &&
[scanner scanString:@"/" intoString:nil] &&
[scanner scanInt:&day])
{
// found valid month/day
if ([scanner scanString:@"/" intoString:nil] &&
[scanner scanInt:&year])
{
// found year too
}
}
それとも@Jacobによって示唆されているように文字列の配列にそれを得るためにNSStringののcomponentsSeparatedByStringを使用します。
NSString *monthString, *dayString, *yearString;
NSArray *dateComponents = [birthdayString componentsSeparatedByString:@"/"];
if ([dateComponents count] >= 2)
{
monthString = [dateComponents objectAtIndex:0];
dayString = [dateComponents objectAtIndex:1];
// found month and day
if ([dates count] == 3)
{
yearString = [dateComponents objectAtIndex:2];
// found year, too
}
}
出典
2012-04-27 23:08:43
Rob
申し訳ありませんが、わかります。私はユーザーのFacebookフレンドリストから誕生日をつかんでいます。一部のユーザーには誕生日は含まれていないものもあれば、年を含まないものもあれば、 "13/2/1984"という文字列が返されるものもあります。 年が実際に必要なわけではありません。データベースに保存できるように、月と日付が必要です。 – user339946
年を気にせず、ちょうど記念日にして今年を置いて、将来、実際の誕生年であると数えることができないことを覚えておいてください。 –
現在の年だけを使用しないでください。日付が2月29日で、うるう年でない場合、問題が発生します。 – benzado