1

今日が今年の何日目かを知りたいです。たとえば、今日が 2012 年 3 月 15 日の場合、75(31 + 29 + 15) を取得する必要があります。または、単純に、今日から今年の Jan01 までの日数を表すこともできます。

4

4 に答える 4

13

ordinalityOfUnitのメソッドを使用してNSCalendar、年の日付を取得します。NSDayCalendarUnit inUnit:NSYearCalendarUnit

迅速

let calendar: Calendar = .autoupdatingCurrent
let dayOfTheYear = calendar.ordinality(of: .day, in: .year, for: Date())

Objective-C

NSCalendar *currentCalendar = [NSCalendar currentCalendar];
NSDate *today = [NSDate date];
NSInteger dc = [currentCalendar  
    ordinalityOfUnit:NSDayCalendarUnit 
    inUnit:NSYearCalendarUnit 
    forDate:today
];

2012 年 9 月 25 日に 269 を与える

于 2012-09-25T14:57:37.697 に答える
2

を使用すると、今年の現在の日を示す必要NSDateComponentsがあるコンポーネントを収集できます。NSDayCalendarUnit

次の行に沿ったものは、ニーズに合うはずです。

//create calendar
NSCalendar *calendar = [NSCalendar currentCalendar];

//set calendar time zone
[calendar setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];

//gather date components
NSDateComponents *components = [calendar components:NSDayCalendarUnit fromDate:[NSDate date]];

//gather time components
NSInteger day = [components day];
于 2012-09-25T13:51:34.730 に答える
1

データ形式リファレンスによると、指定子を使用しDて年間通算日を表すことができます。日付フォーマッタは、計算を実行したい場合にはあまり役に立ちませんが、年間通算日を表示したいだけであれば、おそらく最も簡単な方法です。コードは次のようになります。

NSCalendar *cal = [NSCalendar currentCalendar];
NSDateFormatter *df = [[NSDateFormatter alloc] init];

[df setCalendar:cal];
[df setDateFormat:@"DDD"];    // D specifier used for day of year
NSString *dayOfYearString = [df stringFromDate:someDate];  // you choose 'someDate'

NSLog(@"The day is: %@", dayOfYearString);
于 2012-09-25T14:20:52.893 に答える
0

NSDateNSDateComponentsおよびクラスを使用するNSCalendarと、前年の最後の日から今日までの日数を簡単に計算できます (これは、今年の今日の数を計算するのと同じです)。

// create your NSDate and NSCalendar objects
NSDate *today = [NSDate date];
NSDate *referenceDate;
NSCalendar *calendar = [NSCalendar currentCalendar];

// get today's date components
NSDateComponents *components = [calendar components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:today];

// changing the date components to the 31nd of December of last year
components.day = 31;
components.month = 12;
components.year--;

// store these components in your date object
referenceDate = [calendar dateFromComponents:components];

// get the number of days from that date until today
components = [calendar components:NSDayCalendarUnit fromDate:referenceDate toDate:[NSDate date] options:0];
NSInteger days = components.day;
于 2012-09-25T14:32:11.620 に答える