Написание логики Разница в дате - Новичок - PullRequest
1 голос
/ 05 октября 2011

Есть ли способ вычесть текущую дату на 5.скажем, если сегодня 2008-12-9 мне нужно получить дату 5 дней назад.Если мы выводим это, дата должна отображаться как 2008-12-4.

Как я могу кодировать это программно?или учебник, который поможет

Ответы [ 4 ]

3 голосов
/ 05 октября 2011

Всегда используйте NSCalendar и NSDateComponents для вычисления даты. При этом будут учитываться такие странности, как високосные годы с 29 днями в феврале, високосные секунды и изменения летнего времени.

NSDate *date = [NSDate date]; // Using current date here
NSCalendar *calendar = [NSCalendar currentCalendar];

NSDateComponents *components = [[NSDateComponents alloc] init];

components.day = - 5; // Find date for 5 days ago

NSDate *newDate = [calendar dateByAddingComponents:components toDate:date options:0];
2 голосов
/ 05 октября 2011

Использование NSDateComponents

NSDate *today = [NSDate date];
NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *offsetComponents = [[[NSDateComponents alloc] init] autorelease];
[offsetComponents setDays:-5];

NSDate *fiveDaysAgo = [gregorian dateByAddingComponents:offsetComponents toDate:today options:0];

, чтобы преобразовать его в строку с предпочтительным форматом, используйте NSDateFormatter

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];

NSString *formattedDateString = [dateFormatter stringFromDate:fiveDaysAgo];
0 голосов
/ 05 октября 2011
#define SOME_HOUR -24*5

NSDate *today = [NSDate date];

NSDate *someDay = [NSDate dateWithTimeInterval:60*60*SOME_HOUR sinceDate:today];
0 голосов
/ 05 октября 2011

Это перебор:

  1. Sustract 5 от DAY.
  2. Если DAY < 0, добавить число дней предыдущего месяца и отнять 1 от MONTH.
  3. Если MONTH < 0, добавить номер месяца года и отнять 1 от YEAR.

Преимущество метода грубой силы в том, что он будет работать с каждым языком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...