Skip to content

Commit e4f0ab6

Browse files
committed
Make date formatter for datetime/date/time responses. #101
1 parent 937e31a commit e4f0ab6

File tree

8 files changed

+126
-17
lines changed

8 files changed

+126
-17
lines changed

NUSurveyor.xcodeproj/project.pbxproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
0002A26816A5FC52004F3B5E /* NSDateFormatterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0002A26716A5FC52004F3B5E /* NSDateFormatterTest.m */; };
1011
005AA64B1521F04B00E67C10 /* NUResponseSetTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 006CE3B815214DB400DD32A2 /* NUResponseSetTest.m */; };
1112
005AA64C1521F04B00E67C10 /* NUResponseTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 005AA6491521676300E67C10 /* NUResponseTest.m */; };
1213
005AA64F152208DE00E67C10 /* NUResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 005AA64D152208DE00E67C10 /* NUResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -203,6 +204,8 @@
203204
/* End PBXContainerItemProxy section */
204205

205206
/* Begin PBXFileReference section */
207+
0002A26616A5FC52004F3B5E /* NSDateFormatterTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSDateFormatterTest.h; sourceTree = "<group>"; };
208+
0002A26716A5FC52004F3B5E /* NSDateFormatterTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSDateFormatterTest.m; sourceTree = "<group>"; };
206209
005AA6481521676300E67C10 /* NUResponseTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NUResponseTest.h; sourceTree = "<group>"; };
207210
005AA6491521676300E67C10 /* NUResponseTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NUResponseTest.m; sourceTree = "<group>"; };
208211
005AA64D152208DE00E67C10 /* NUResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NUResponse.h; path = Models/NUResponse.h; sourceTree = "<group>"; };
@@ -634,6 +637,8 @@
634637
00BF07FA159104B500FAA14C /* NSStringTest.m */,
635638
3BD52AC014C8B43500AB61E8 /* NUSurveyorTests.h */,
636639
3BD52AC114C8B43500AB61E8 /* NUSurveyorTests.m */,
640+
0002A26616A5FC52004F3B5E /* NSDateFormatterTest.h */,
641+
0002A26716A5FC52004F3B5E /* NSDateFormatterTest.m */,
637642
);
638643
path = NUSurveyorTests;
639644
sourceTree = "<group>";
@@ -1377,6 +1382,7 @@
13771382
67DB499314D085CA009CC8C3 /* NUSurveyor.xcdatamodel in Sources */,
13781383
008AE62715224CE000F4F14C /* NUDatabaseTest.m in Sources */,
13791384
00BF07FB159104B500FAA14C /* NSStringTest.m in Sources */,
1385+
0002A26816A5FC52004F3B5E /* NSDateFormatterTest.m in Sources */,
13801386
);
13811387
runOnlyForDeploymentPostprocessing = 0;
13821388
};

NUSurveyor/Models/NSDateFormatter+NUAdditions.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,10 @@
1212

1313
+ (NSDateFormatter*) rfc3339DateFormatter;
1414

15+
+ (NSDateFormatter*) dateTimeResponseFormatter;
16+
17+
+ (NSDateFormatter*) dateResponseFormatter;
18+
19+
+ (NSDateFormatter*) timeResponseFormatter;
20+
1521
@end

NUSurveyor/Models/NSDateFormatter+NUAdditions.m

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,31 @@ @implementation NSDateFormatter (NUAdditions)
1313
+ (NSDateFormatter*) rfc3339DateFormatter {
1414
NSDateFormatter* f = [[NSDateFormatter alloc] init];
1515
[f setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
16-
[f setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];
16+
[f setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZZZ"];
1717
[f setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
1818
return f;
1919
}
2020

21+
+ (NSDateFormatter*) dateTimeResponseFormatter {
22+
NSDateFormatter* f = [[NSDateFormatter alloc] init];
23+
[f setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
24+
[f setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mmZZZZZ"];
25+
[f setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
26+
return f;
27+
}
28+
29+
+ (NSDateFormatter*) dateResponseFormatter {
30+
NSDateFormatter* f = [[NSDateFormatter alloc] init];
31+
[f setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
32+
[f setDateFormat:@"yyyy-MM-dd"];
33+
return f;
34+
}
35+
36+
+ (NSDateFormatter*) timeResponseFormatter {
37+
NSDateFormatter* f = [[NSDateFormatter alloc] init];
38+
[f setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
39+
[f setDateFormat:@"HH:mm"];
40+
return f;
41+
}
42+
2143
@end

NUSurveyor/Views/NUAnyDatePickerCell.m

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//
88

99
#import "NUAnyDatePickerCell.h"
10+
#import "NSDateFormatter+NUAdditions.h"
1011

1112
@interface NUAnyDatePickerCell()
1213
@property (nonatomic, strong) NSString *type;
@@ -101,12 +102,11 @@ - (NSDateFormatter *) dateFormatterFromType:(NSString *)type {
101102
return formatter;
102103
}
103104
- (NSDateFormatter *) storedDateFormatterFromType:(NSString *)type {
104-
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
105-
[formatter setDateFormat:@"yyyy-MM-dd"];
105+
NSDateFormatter *formatter = [NSDateFormatter dateResponseFormatter];
106106
if ([type isEqualToString:@"datetime"]) {
107-
[formatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mmZ"];
107+
formatter = [NSDateFormatter dateTimeResponseFormatter];
108108
} else if ([type isEqualToString:@"time"]) {
109-
[formatter setDateFormat:@"HH:mm"];
109+
formatter = [NSDateFormatter timeResponseFormatter];
110110
}
111111
return formatter;
112112
}

NUSurveyor/Views/NUDatePickerCell.m

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//
88

99
#import "NUDatePickerCell.h"
10+
#import "NSDateFormatter+NUAdditions.h"
1011

1112
@interface NUDatePickerCell()
1213
- (void) pickerDone;
@@ -91,12 +92,11 @@ - (NSDateFormatter *) dateFormatterFromType:(NSString *)type {
9192
return formatter;
9293
}
9394
- (NSDateFormatter *) storedDateFormatterFromType:(NSString *)type {
94-
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
95-
[formatter setDateFormat:@"yyyy-MM-dd"];
95+
NSDateFormatter *formatter = [NSDateFormatter dateResponseFormatter];
9696
if ([type isEqualToString:@"datetime"]) {
97-
[formatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mmZ"];
97+
formatter = [NSDateFormatter dateTimeResponseFormatter];
9898
} else if ([type isEqualToString:@"time"]) {
99-
[formatter setDateFormat:@"HH:mm"];
99+
formatter = [NSDateFormatter timeResponseFormatter];
100100
}
101101
return formatter;
102102
}

NUSurveyor/Views/NUOneDatePickerCell.m

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
#import "NUOneDatePickerCell.h"
1010
#import "NUOneStringOrNumberCell.h"
11+
#import "NSDateFormatter+NUAdditions.h"
1112

1213
@interface NUOneDatePickerCell()
1314
- (void) pickerDone;
@@ -110,14 +111,13 @@ - (NSDateFormatter *) dateFormatterFromType:(NSString *)type {
110111
return formatter;
111112
}
112113
- (NSDateFormatter *) storedDateFormatterFromType:(NSString *)type {
113-
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
114-
[formatter setDateFormat:@"yyyy-MM-dd"];
115-
if ([type isEqualToString:@"datetime"]) {
116-
[formatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mmZ"];
117-
} else if ([type isEqualToString:@"time"]) {
118-
[formatter setDateFormat:@"HH:mm"];
119-
}
120-
return formatter;
114+
NSDateFormatter *formatter = [NSDateFormatter dateResponseFormatter];
115+
if ([type isEqualToString:@"datetime"]) {
116+
formatter = [NSDateFormatter dateTimeResponseFormatter];
117+
} else if ([type isEqualToString:@"time"]) {
118+
formatter = [NSDateFormatter timeResponseFormatter];
119+
}
120+
return formatter;
121121
}
122122
- (void) nowPressed{
123123
[self.pickerVC.datePicker setDate:[NSDate date] animated:YES];
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//
2+
// NSDateFormatterTest.h
3+
// NUSurveyor
4+
//
5+
// Created by John Dzak on 1/15/13.
6+
// Copyright (c) 2013 Northwestern University. All rights reserved.
7+
//
8+
9+
#import <SenTestingKit/SenTestingKit.h>
10+
11+
@interface NSDateFormatterTest : SenTestCase
12+
13+
@end
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
//
2+
// NSDateFormatterTest.m
3+
// NUSurveyor
4+
//
5+
// Created by John Dzak on 1/15/13.
6+
// Copyright (c) 2013 Northwestern University. All rights reserved.
7+
//
8+
9+
#import "NSDateFormatterTest.h"
10+
#import "NSDateFormatter+NUAdditions.h"
11+
@implementation NSDateFormatterTest
12+
13+
- (void)testRFC3339Formatter {
14+
15+
// date-fullyear = 4DIGIT
16+
// date-month = 2DIGIT ; 01-12
17+
// date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on
18+
// ; month/year
19+
// time-hour = 2DIGIT ; 00-23
20+
// time-minute = 2DIGIT ; 00-59
21+
// time-second = 2DIGIT ; 00-58, 00-59, 00-60 based on leap second
22+
// ; rules
23+
// time-secfrac = "." 1*DIGIT
24+
// time-numoffset = ("+" / "-") time-hour ":" time-minute
25+
// time-offset = "Z" / time-numoffset
26+
// partial-time = time-hour ":" time-minute ":" time-second
27+
// [time-secfrac]
28+
// full-date = date-fullyear "-" date-month "-" date-mday
29+
// full-time = partial-time time-offset
30+
// date-time = full-date "T" full-time
31+
32+
NSDateFormatter* f = [NSDateFormatter rfc3339DateFormatter];
33+
STAssertNotNil([f dateFromString:@"2012-08-06T05:18:00Z"], nil);
34+
35+
STAssertNotNil([f dateFromString:@"2012-08-06T05:18:00+02:00"], nil);
36+
37+
STAssertNotNil([f dateFromString:@"2012-08-06T05:18:00-02:00"], nil);
38+
}
39+
40+
- (void)testDateTimeResponseFormatter {
41+
NSDateFormatter* f = [NSDateFormatter dateTimeResponseFormatter];
42+
43+
STAssertNotNil([f dateFromString:@"2012-08-06T05:18Z"], nil);
44+
45+
STAssertNotNil([f dateFromString:@"2012-08-06T05:18+02:00"], nil);
46+
47+
STAssertNotNil([f dateFromString:@"2012-08-06T05:18-02:00"], nil);
48+
}
49+
50+
- (void)testDateResponseFormatter {
51+
NSDateFormatter* f = [NSDateFormatter dateResponseFormatter];
52+
53+
STAssertNotNil([f dateFromString:@"2012-08-06"], nil);
54+
}
55+
56+
- (void)testTimeResponseFormatter {
57+
NSDateFormatter* f = [NSDateFormatter timeResponseFormatter];
58+
59+
STAssertNotNil([f dateFromString:@"05:18"], nil);
60+
}
61+
62+
@end

0 commit comments

Comments
 (0)