11

私はnsdateから平日を取得できるようにする必要があります.

NSDate *date2 = [[NSDate alloc] initWithString:[NSString stringWithFormat:@"%d-%d-%d", 2010, 6, 1]];
unsigned units2 = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit | NSWeekdayCalendarUnit;
NSCalendar *calendar2 = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components2 = [calendar2 components:units2 fromDate:date2];
int startWeekDay = [components2 weekday];
[date2 release];
[calendar2 release];
4

7 に答える 7

43

平日のみを含むを作成するNSDateFormatterと、必要な処理が実行されます。

NSDate *now = [NSDate date];
NSDateFormatter *weekday = [[[NSDateFormatter alloc] init] autorelease];
[weekday setDateFormat: @"EEEE"];
NSLog(@"The day of the week is: %@", [weekday stringFromDate:now]);

国際化が必要な場合はNSDateFormatter、適切な翻訳を提供するロケールを送信できます。

日付フォーマッタは、次の標準によって制御されます。Unicode日付フォーマット

于 2010-08-19T17:27:33.210 に答える
6

Mac 用に編集:

ドキュメントによると、文字列の形式は—YYYY-MM-DD HH:MM:SS ±HHMMである必要があり、すべてのフィールドが必須です。

古い回答(iPhoneの場合、シミュレーターでテスト済み):

には (public)-initWithString:メソッドはなくNSDate、返されるものは期待したものではありません。

適切に構成された (入力形式を指定する必要があります)NSDateFormatterと を使用します-dateFromString:

于 2010-08-19T17:24:54.857 に答える
0

私は問題を解決しました。問題は、日付文字列の形式が間違っていたことです。

NSDate *date = [[NSDate alloc] initWithString:[NSString stringWithFormat:@"%d-%d-%d 10:45:32 +0600", selectedYear, selectedMonth, selectedDay]];

時間を気にしないので、文字列の最後までランダムに時間を渡します

于 2010-08-19T17:50:42.567 に答える
0

Xcode 6.4を使用しています

NSDate を設定する方法はたくさんあります。ここでは説明しません。文字列を使用して 1 つの方法で実行しました (エラーに対して非常に脆弱であるため、この方法は避けています)。別の方法で設定しています。とにかく、コンポーネントの weekday または setDay メソッドにアクセスしてください。

NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
[calendar setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en-US"]];
NSDateComponents *components = [calendar components:(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitWeekday|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond) fromDate:[NSDate date]];
    NSDate *date = [calendar dateFromComponents:components];

このようにして、これらのコンポーネントを次のように取得または設定できます。

[components weekday] //to get, then doSomething
[components setDay:6]; //to set

もちろん、NSDate *date = [calendar dateFromComponents:components];コンポーネントを変更した後にのみ設定します。

これらも設定したい場合に備えて、コンテキスト用に追加のローカルおよびその他のコンポーネントを追加しました。

これは無料のコードです。ノックしないでください。

于 2015-08-13T20:07:32.140 に答える
0

次の Web サイトを使用して、日付に必要な形式を取得するための文字列を設定するのに役立ちました

Coder Wall - Objective C の日付フォーマットのガイド

于 2019-01-19T00:26:58.193 に答える