我有一个时间戳 (NSDate),我想验证另一个时间戳是否发生在同一日历周、月、年、日等。
我试图通过定义其他 2 个 NSDates 来做到这一点,一个作为开始日期,一个作为结束日期。然后用这两个日期表示所需的时间跨度。
定义当天开始的示例:
NSDate *myDate = [[NSDate alloc] init];
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *components = [cal components:(
NSEraCalendarUnit |
NSMonthCalendarUnit |
NSYearCalendarUnit |
NSDayCalendarUnit |
NSHourCalendarUnit |
NSMinuteCalendarUnit |
NSSecondCalendarUnit |
NSTimeZoneCalendarUnit
) fromDate:myDate];
[components setHour:1];
[components setMinute:0];
[components setSecond:0];
startDate = [cal dateFromComponents:components];
这应该将 startDate 设置为当前日期的时间 00:00:00。问题是这仅在 myDate 具有当前时区时才有效。例如,如果我们现在有冬季时间,而 NSDate 是夏季时间,它会将时间设置为错误的 1 小时。
我如何在此计算中考虑夏季/冬季时间,或者是否有更好的方法来表示时间戳所在的基于日历的时间跨度的具体时间跨度?