我开发了一个应用程序,它可以处理很多日期,并使用这种方法将这些作为字符串存储在核心数据中:
- (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]; ?
或者
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
和
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSRepublicOfChinaCalendar];
尤其是 取决于该应用程序是在欧洲/美国还是中国使用?