私は、この方法を使用して、日付を多く処理し、これらを文字列としてコアデータに格納するアプリを開発しました。
- (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];
特定の日付/時刻を設定/変更/作成し、計算を行い、それらをNSStringとしてコアデータに再度取得/保存する必要がある場合。
私の質問は、適切なカレンダーの使用についてです。
私はいつも書くべきですか:
NSCalendar *calendar = [NSCalendar currentCalendar]; ?
また
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
と
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSRepublicOfChinaCalendar];
特に アプリがヨーロッパ/アメリカと中国のどちらで使用されているかによって異なりますか?