在我的iOS应用中,我有一个星期号,我需要获取该星期号的开始和结束日期。
我正在构建一个应用程序,公司经理可以使用该应用程序跟踪员工的工作时间。这些工作时间每天在自定义Registration
对象中处理。在该对象中,存储日期,开始时间,结束时间和休息时间,并根据这些值计算工作时间。
然后,所有Registration
对象都存储在一个WorkWeek
对象中,其中包含一个星期数和一组注册。WorkWeek
的构建基于周数,并且从星期一到星期日运行。在此WorkWeek
对象中,计算了总工作时间,加班时间和工资。
现在显然,如果aWorkweek
并非从星期一到星期五的整周,我将无法可靠地计算出额外的小时数。特别是当用户选择从我的数据库中的某个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
美国。根据您的需要,您还可以在此处使用恒定值。cal.minimumDaysInFirstWeek
将NSDateFormatter报告设置为2013年6月2日,比较为零周。dateByAddingUnit:...
方法在OS X 10.9或更高版本中可用。或者,使用dateByAddingComponents:...
。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句