在我的iOS应用中,我有一个星期编号,我需要获取该周编号的开始和结束日期。
我正在构建一个应用程序,公司经理可以使用该应用程序跟踪员工的工作时间。这些工时是每天在自定义Registration
对象中处理的。
在此对象中,存储日期,开始时间,结束时间和休息时间,并根据这些值计算工作时间。
然后,所有Registration
个对象都存储在WorkWeek
对象中,其中包含周数和注册数组。 WorkWeek
是基于周数构建的,从星期一到星期日。在此WorkWeek
对象中,计算总工时,额外工时和工资。
现在显然,如果Workweek
不是从星期一到星期五的整整一周,我就无法可靠地计算额外的小时数。当用户选择从我的数据库中获取mont的所有注册时,尤其会发生这种情况。一个月不会在星期一开始,也不会在四周后的星期日结束,所以我正在处理不可靠的周对象。
结束
为了确保我在我的应用程序中显示的信息是可靠的,我需要确定某个星期(如第1周或第52周)是否包含至少7天,如果不是,我需要将bool设置为FALSE然后触发我的用户通知。
如何根据一个周岁的人来获取一周的开始和结束日期?
答案 0 :(得分:1)
这说明了如何做到这一点:
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
根据您的需要,
你也可以在这里使用一个常数值。cal.minimumDaysInFirstWeek
,比较
NSDateFormatter reports June 2, 2013 as being in week zero。dateByAddingUnit:...
方法。
或者,使用dateByAddingComponents:...
。