Я разработал приложение, которое много работает с датами, а также сохраняет их в виде строк в основных данных, используя этот метод:
- (NSDate*) stringToDate{
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yy-MM-dd HH:mm"];
NSDate *date = [dateFormat dateFromString:self];
return date;
}
Работа с датой/временем довольно сложна - только разница во времени между системой и местным временем - в любом случае, описанный выше метод должен позаботиться об этом. (Так что я надеюсь, поскольку форматирование NSDate в NSString возвращает правильное местное время вместо просмотра переменной NSDate в отладчике, которая в моем случае показывает разницу в 2 часа)
Таких вычислений также много:
NSCalendar *calendar = [NSCalendar currentCalendar]; <------
NSDateComponents *components = [calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSYearCalendarUnit |NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:someDate];
NSInteger now_hour = [components hour];
NSInteger now_minute = [components minute];
NSInteger yearx = [components year];
NSInteger monthx = [components month];
NSInteger dayx = [components day];
где мне нужно установить/изменить/создать определенные даты/время, выполнить вычисления и снова получить/сохранить их в основных данных как NSStrings.
Мой вопрос касается использования соответствующего календаря.
Должен ли я всегда писать:
NSCalendar *calendar = [NSCalendar currentCalendar]; ?
or
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
и
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSRepublicOfChinaCalendar];
особ. в зависимости от того, используется ли приложение в Европе/США или Китае?
A Chinese calendar can be created, and you can do calendrical calculations with it, but you should not use it for formatting as the necessary underlying functionality is not working correctly yet.
- person nhahtdh   schedule 25.07.2012