日付を取り、それを時刻コンポーネントなしで日付に変換しようとするコード スニペットを取得しました。次に、このトリミングされたデータを使用して、コア データからの保存/フェッチを行います。
-(NSDate*)dateWithNoTimeComponents:(NSDate*)startDate
{
//
NSCalendar *calendar = [NSCalendar currentCalendar];
NSNumber* count = 0;
int secondsPerDay = 86400;
//break the date and create fractional components for that date
NSDateComponents *components = [calendar components:(NSWeekdayCalendarUnit| NSHourCalendarUnit | NSMinuteCalendarUnit|NSSecondCalendarUnit) fromDate:startDate];
NSInteger hour = [components hour];
NSInteger minute = [components minute];
NSInteger second = [components second];
//update daily count
//remove fractional componets from the date, effectively creating a key per day
return [NSDate dateWithTimeInterval:-((hour*60+minute)*60+second) sinceDate:startDate];
}
私の懸念は、これが異なるタイムゾーンの日付では機能しない可能性があることです. 異なるタイムスタンプから日付を入れると、このメソッドに影響しますか? たとえば、GMT -5 タイムゾーンにいて、GMT -8 タイムゾーンに移動した場合、この方法で生成されたトリミングされた日付は正しいでしょうか? グローバルに正確にするために、この計算のどこかにタイムゾーン オフセット/夏時間を含める必要がありますか?