私はObjective Cの初心者です。ユーザーが年と日数を指定したときに生年月日を特定するアプリを開発しています。たとえば、ユーザーが生年月日として 1985 年を指定し、日数を 311 として指定した場合、彼/ここでの生年月日は 1985 年 11 月 6 日です。助けてください
4 に答える
4
現在の年がうるう年かどうかを計算する必要はありません。これまでにない。フレームワークに任せてください。あなたや私よりもはるかに知的な人々がすでに私たちのためにこれを行っているのに、一体なぜ、複雑なカレンダーの変動のすべてを説明することのできない次善のアルゴリズムでこの車輪を再発明しようとするのでしょうか?
これを自分で行うのはばかげています。だからしないでください:
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *startComponents = [[NSDateComponents alloc] init];
[startComponents setYear:1985];
[startComponents setDay:311];
NSDate *date = [gregorian dateFromComponents:startComponents];
NSLog(@"endDate: %@", date);
これはログに記録します:
endDate: 1985-11-07 08:00:00 +0000
于 2012-05-18T18:13:39.203 に答える
-1
このようなもの(テストされていません):
NSDateFormatter *df = [[NSDateFormatter alloc] init] autorelease];
[df setDateFormat:@"yyyy"];
NSDate *date1 = [df dateWithString:@"1985"];
NSDate *date2 = [df dateByAddingTimeInterval:60*60*24*311]; //
于 2012-05-18T18:21:34.837 に答える
-2
まず、月日ではなく、誰かから日数を取得するのはなぜですか。ユーザーは自分が生まれた年の何日かわからず、それを理解しようとすることに不満を感じるでしょう。
質問に答えるために、各月末の日数{31、28、31、30、...}を格納する配列を作成し、それを参照として使用できます(ループ内の合計を減算します)。また、その年がうるう年であったかどうかを確認し、59を超える場合は合計から1を引く必要があります。
于 2012-05-18T18:04:26.393 に答える
-2
Objective-Cから特別なことは何も必要ありません...最初に、その年がうるう年であるかどうかを知る必要があります。次に、月から目標日で終わるまでの日数を数える必要があります。
于 2012-05-18T18:05:53.100 に答える