如何在 objective c 中获取周数的开始和结束日期
How to get start and end dat for week number in objective c
在我的 iOS 应用中,我有一个周数,我需要获取该周数的开始和结束日期。
我正在构建一个应用程序,公司经理可以使用该应用程序跟踪员工的工作时间。这些工作时间在自定义 Registration
对象中每天处理。
在此对象中,存储日期、开始时间、结束时间和休息时间,并根据这些值计算工作时间。
然后,所有 Registration
对象都存储在一个 WorkWeek
对象中,其中包含周数和注册数组。 WorkWeek
是根据周数构建的,运行 从周一到周日。在这个WorkWeek
对象中,计算了总工作时间、加班时间和工资。
很明显,如果 Workweek
不是从星期一到星期五的 运行 整周,我就无法可靠地计算额外的时间。当用户选择从我的数据库中获取 mont 的所有注册时,尤其会发生这种情况。一个月不会从星期一开始,也不会在恰好四个星期后的星期日结束,所以我正在处理不可靠的周对象。
总结
为了确保我在我的应用程序中显示的信息是可靠的,我需要确定某一周(例如第 1 周或第 52 周)是否包含至少 7 天,如果不是,我需要设置一个布尔值到 FALSE 然后触发通知我的用户。
如何根据周数获取一周的开始和结束日期?
这显示了它是如何完成的:
NSCalendar *cal = [NSCalendar currentCalendar];
// Start of week:
NSDateComponents *comp = [[NSDateComponents alloc] init];
comp.weekday = cal.firstWeekday;
comp.weekOfYear = 1; // <-- fill in your week number here
comp.year = 2015; // <-- fill in your year here
NSDate *startOfWeek = [cal dateFromComponents:comp];
// Add 6 days:
NSDate *endOfWeek = [cal dateByAddingUnit:NSCalendarUnitDay value:6 toDate:startOfWeek options:0];
// Show results:
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateStyle = NSDateFormatterShortStyle;
NSLog(@"%@", [fmt stringFromDate:startOfWeek]);
NSLog(@"%@", [fmt stringFromDate:endOfWeek]);
一些注意事项:
cal.firstWeekday
给出第一个工作日的语言环境相关索引,例如
2 = Monday
在德国,或 1 = Sunday
在 U.S。根据您的需要,
您也可以在此处使用常量值。
- 可能需要设置
cal.minimumDaysInFirstWeek
,比较一下
NSDateFormatter reports June 2, 2013 as being in week zero.
dateByAddingUnit:...
方法在 OS X 10.9 或更高版本中可用。
或者,使用 dateByAddingComponents:...
.
- 我假设你使用公历,所以一周有 7 天。
或者,您可以加一周,然后减去一天。
在我的 iOS 应用中,我有一个周数,我需要获取该周数的开始和结束日期。
我正在构建一个应用程序,公司经理可以使用该应用程序跟踪员工的工作时间。这些工作时间在自定义 Registration
对象中每天处理。
在此对象中,存储日期、开始时间、结束时间和休息时间,并根据这些值计算工作时间。
然后,所有 Registration
对象都存储在一个 WorkWeek
对象中,其中包含周数和注册数组。 WorkWeek
是根据周数构建的,运行 从周一到周日。在这个WorkWeek
对象中,计算了总工作时间、加班时间和工资。
很明显,如果 Workweek
不是从星期一到星期五的 运行 整周,我就无法可靠地计算额外的时间。当用户选择从我的数据库中获取 mont 的所有注册时,尤其会发生这种情况。一个月不会从星期一开始,也不会在恰好四个星期后的星期日结束,所以我正在处理不可靠的周对象。
总结
为了确保我在我的应用程序中显示的信息是可靠的,我需要确定某一周(例如第 1 周或第 52 周)是否包含至少 7 天,如果不是,我需要设置一个布尔值到 FALSE 然后触发通知我的用户。
如何根据周数获取一周的开始和结束日期?
这显示了它是如何完成的:
NSCalendar *cal = [NSCalendar currentCalendar];
// Start of week:
NSDateComponents *comp = [[NSDateComponents alloc] init];
comp.weekday = cal.firstWeekday;
comp.weekOfYear = 1; // <-- fill in your week number here
comp.year = 2015; // <-- fill in your year here
NSDate *startOfWeek = [cal dateFromComponents:comp];
// Add 6 days:
NSDate *endOfWeek = [cal dateByAddingUnit:NSCalendarUnitDay value:6 toDate:startOfWeek options:0];
// Show results:
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateStyle = NSDateFormatterShortStyle;
NSLog(@"%@", [fmt stringFromDate:startOfWeek]);
NSLog(@"%@", [fmt stringFromDate:endOfWeek]);
一些注意事项:
cal.firstWeekday
给出第一个工作日的语言环境相关索引,例如2 = Monday
在德国,或1 = Sunday
在 U.S。根据您的需要, 您也可以在此处使用常量值。- 可能需要设置
cal.minimumDaysInFirstWeek
,比较一下 NSDateFormatter reports June 2, 2013 as being in week zero. dateByAddingUnit:...
方法在 OS X 10.9 或更高版本中可用。 或者,使用dateByAddingComponents:...
.- 我假设你使用公历,所以一周有 7 天。 或者,您可以加一周,然后减去一天。