This repository has been archived by the owner on Oct 10, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNSDate+OVSSConditionalDaysAdditions.m
185 lines (144 loc) · 6.05 KB
/
NSDate+OVSSConditionalDaysAdditions.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
//
// NSDate+OVSSConditionalDaysAdditions.m
#import "NSDate+OVSSConditionalDaysAdditions.h"
@implementation NSDate (NSDate_OVSSConditionalDaysAdditions)
+(NSDate *)beginningofweek{
NSDate *today=[NSDate date];
unsigned units = NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekdayCalendarUnit | NSWeekCalendarUnit /*| NSDayCalendarUnit*/;
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorian components:units fromDate:today];
// if ([components day]<=7) {
// [components setMonth:[components month]-1];
//}
int week=[components week];
if ([[NSUserDefaults standardUserDefaults]boolForKey:@"StartOnMondayKey"]==YES) {
[components setWeekday:2];
} else {
[components setWeekday:1];
}
[components setWeek:week];
NSDate *finaldate=[gregorian dateFromComponents:components];
NSDate *finisheddate;
if ([today compare:finaldate]==NSOrderedAscending) {
NSDateComponents *finalcomponents = [gregorian components:units fromDate:finaldate];
[finalcomponents setWeek:[finalcomponents week]-1];
finisheddate=[gregorian dateFromComponents:finalcomponents];
return finisheddate;
}
return finaldate;
}
-(NSString *)monthNum{
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdayComponents =
[gregorian components:NSMonthCalendarUnit | NSYearCalendarUnit fromDate:self];
int month = [weekdayComponents month];
NSString *monthstring;
switch (month) {
case 1:
monthstring=@"January";
break;
case 2:
monthstring=@"February";
break;
case 3:
monthstring=@"March";
break;
case 4:
monthstring=@"April";
break;
case 5:
monthstring=@"May";
break;
case 6:
monthstring=@"June";
break;
case 7:
monthstring=@"July";
break;
case 8:
monthstring=@"August";
break;
case 9:
monthstring=@"September";
break;
case 10:
monthstring=@"October";
break;
case 11:
monthstring=@"November";
break;
case 12:
monthstring=@"December";
break;
default:monthstring=@"error";
break;
}
NSString *final=[NSString stringWithFormat:@"%@ %d",monthstring,[weekdayComponents year]];
return final;
}
+(NSDate *)beginningofmonth{
NSDate *today=[NSDate date];
unsigned units = NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekdayCalendarUnit | NSWeekCalendarUnit | NSDayCalendarUnit;
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorian components:units fromDate:today];
[components setDay:1];
return [gregorian dateFromComponents:components];
}
+(NSDate *)beginningofyear{
NSDate *today=[NSDate date];
unsigned units = NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekdayCalendarUnit | NSWeekCalendarUnit;
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorian components:units fromDate:today];
[components setMonth:1];
[components setDay:1];
return [gregorian dateFromComponents:components];
}
+(NSDate *)beginningoflastweek{
NSDate *today=[NSDate date];
unsigned bunits = NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekdayCalendarUnit | NSWeekCalendarUnit | NSDayCalendarUnit;
NSCalendar *bgregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *bcomponents = [bgregorian components:bunits fromDate:today];
unsigned units = NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekdayCalendarUnit | NSWeekCalendarUnit | NSDayCalendarUnit;
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorian components:units fromDate:today];
int day=[components day];
if ([[NSUserDefaults standardUserDefaults]boolForKey:@"StartOnMondayKey"]==YES) {
[components setWeekday:2];
} else {
[components setWeekday:1];
}
[components setDay:day-7];
if ([[NSUserDefaults standardUserDefaults]boolForKey:@"StartOnMondayKey"]==YES & [bcomponents weekday]==1) {
[components setDay:[components day]-6];
}
return [gregorian dateFromComponents:components];
}
+(NSDate *)beginningoftwoweeksago{
NSDate *today=[NSDate date];
BOOL lastmonth=NO;
unsigned bunits = NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekdayCalendarUnit | NSWeekCalendarUnit | NSDayCalendarUnit;
NSCalendar *bgregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *bcomponents = [bgregorian components:bunits fromDate:today];
if ([bcomponents day]<=7) {
lastmonth=YES;
}
unsigned units = NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekdayCalendarUnit | NSWeekCalendarUnit | NSDayCalendarUnit;
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorian components:units fromDate:today];
int day=[components day];
if ([[NSUserDefaults standardUserDefaults]boolForKey:@"StartOnMondayKey"]==YES) {
[components setWeekday:2];
} else {
[components setWeekday:1];
}
if (lastmonth) {
[components setMonth:[components month]-1];
}
[components setDay:day-14];
if ([[NSUserDefaults standardUserDefaults]boolForKey:@"StartOnMondayKey"]==YES & [bcomponents weekday]==1) {
[components setDay:[components day]-6];
}
return [gregorian dateFromComponents:components];
}
@end