2013-07-11 12 views
6

dateから私の年の週番号を取得したいと思います。次のようにコードを試しましたが、間違った週番号が返されます。週番号のiOS SDKの週番号を取得

マイコード:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"YYYY-MM-dd"]; 
    NSDate *date = [dateFormatter dateFromString:@"2012-09-15"]; 


    NSCalendar *calendar = [NSCalendar currentCalendar]; 

    NSLog(@"week: %i", [[calendar components: NSWeekOfYearCalendarUnit fromDate:date] weekOfYear]); //Display 38 instead of 37 
} 

注:私は正しい[NSDate date]表示としてみてください。

+0

私の答えはhttpを参照してください:// stackoverflow.com/questions/17403761/get-the-day-from-the-date-in-ios-sdk/17403855#17403855 –

+2

日付の週番号にはさまざまな定義があります。私はそれがあなたの問題の最も可能性の高い原因だと思う。詳細はhttp://en.wikipedia.org/wiki/Calendar_week#Week_numberingを参照してください。 – Treb

+0

@ SAMIRRATHOD、返信ありがとう...それはちょうど週の番号ではない週の日について表示されます。 – user2526811

答えて

17

ObjectiveC、ありがとう...私はこの問題を解決するためのヘルプ:

NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *dateComponent = [calendar components:(NSWeekOfYearCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:[NSDate date]]; 
NSLog(@"%@",dateComponent); 

スウィフト:

let calendar = NSCalendar.currentCalendar() 
let dateComponent = calendar.components([.WeekOfYear, .Day, .Month, .Year], fromDate: NSDate(timeIntervalSinceNow: 0)) 
print("weekOfYear \(dateComponent.weekOfYear)") 

スウィフト3:

let component = Calendar.current.component(.weekOfYear, from: Date()) 
print("Week of Year \(component)") 
+0

返信ありがとうございます..しかし、上記のようにStringから日付を渡そうとすると、間違った週番号が返されます。 – user2526811

+0

NSDateComponentsに使用 –

+0

**あなたの答えをおかげで多く!!!ありがとうございました** – user2526811

11

[NSCalendar currentCalendar] GIグレゴリオ暦をデフォルトとして使用しています。あなたは、ISO 08601はあなたの日付の週番号を持っているカレンダーを、適合し得るために

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSISO8601Calendar]; 

を使用することができます。

+0

申し訳ありませんが、 '2012-09-25'では39_の代わりに_38を返します。 **今何が問題になっているのですか?** – user2526811

+0

カレンダーの最初の週の日を正しい値に設定しようとしていますか? - (void)setFirstWeekday:(NSUInteger)平日 – AlexVogel

+0

私は解決策を得ました。 – user2526811

0

スウィフト3: ご希望の月の最後にDateが必要です。チェック今週のための週の数、これは月に数週間のあなたの数になります

return Calendar.current.component(.weekOfMonth, from: lastDate ?? Date()) 
0

ObjectiveCでコードを更新しましたがXcodeのバージョンを使用されるよりも - 9.1 - :

NSCalendar *calendar = [NSCalendar currentCalendar]; 
    NSDateComponents *dateComponent = [calendar components:(NSCalendarUnitWeekOfYear | NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear) fromDate:[NSDate date]]; 
    NSLog(@"%ld",(long)[dateComponent weekOfYear]); 
関連する問題