как записать дату без времени в iphone

#iphone #objective-c

#iPhone #objective-c

Вопрос:

Я пытаюсь удалить время из даты, как это сделать, я пробую этот код, он не работает должным образом, где я ошибаюсь

 NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDate *todaysDate = [NSDate date]; 
//NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
NSDateComponents*dateComponents = [gregorian components:NSDayCalendarUnit fromDate:todaysDate];

[dateComponents setDay:1]; 
app.selectionData.fromDateSelected = [gregorian dateByAddingComponents:dateComponents toDate:todaysDate options:0]; 
//[dateComponents release]; 
[gregorian release];
  

Ответ №1:

Вы пытаетесь это сделать?

 NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
int comps = NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit;
NSDateComponents *dateComponents = [gregorian components:comps fromDate:[NSDate date]]; 
[dateComponents setDay:[dateComponents day]   1];
app.selectionData.fromDateSelected = [gregorian dateFromComponents:dateComponents]; 
[gregorian release];
  

Комментарии:

1. но я хочу установить день1 с сегодняшнего дня следующим образом [DateComponents setDay:1];

2. Кажется, вы хотите добавить 1 день к текущей дате. Я отредактировал ответ!

Ответ №2:

Чтобы получить только дату, вы можете использовать NSDateFormatter

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
NSString* currentDate = [dateFormatter stringFromDate:[NSDate date]];
[dateFormatter release]; 
  

Вы также можете указать свой собственный формат даты.
Например:

 [dateFormattter setDateFormat:@"yyyy-mm-dd"];
  

Вы можете обратиться к UTS # 35 и руководству по форматированию даты для получения дополнительных опций форматирования.

Ответ №3:

Попробуйте это. Это работает для меня

 NSDate *todaysDate = [NSDate date];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
NSString *stringDate = [dateFormat stringFromDate:todaysDate];
NSLog(@"stringDate: %@",stringDate);
[dateFormat release];
  

Редактировать:

  NSDate *today = [NSDate date];
    NSTimeInterval secondsPerDay = 24 * 60 * 60;    
    NSDate *date = [today addTimeInterval:secondsPerDay]; 
    //Change NSDate *date = [tomorrow addTimeInterval:-secondsPerDay]; for yesterday
    NSDate *tomorrow = date;
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"yyyy-MM-dd"];
    NSString *stringDate = [dateFormat stringFromDate:tomorrow];
    NSLog(@"stringDate: %@",stringDate);
    [dateFormat release];
  

Надеюсь, это вам поможет.

Комментарии:

1. но я хочу с заданным днем: 1 с сегодняшнего дня, как это сделать [DateComponents setDay:1];

2. @Rocky: Что именно setDay:1 делает настройка? Я не использовал NSDateComponents .

3. установленный день: 1 я использую это для отображения в ячейке сегодня 1 день предположим, что если сегодня 5, то он показывает 6 в ячейке

4. Я отредактировал свой ответ, чтобы получить ответ для вас. Проверьте код в разделе РЕДАКТИРОВАНИЯ моего ответа. Это сработает для вас.