Skip to content

Commit

Permalink
Avoid potential issues with daylight saving time.
Browse files Browse the repository at this point in the history
  • Loading branch information
xhacker committed Jan 31, 2014
1 parent 1464880 commit 32ce014
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 3 deletions.
15 changes: 15 additions & 0 deletions TEAChart/NSDate+TEAExtensions.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
//
// NSDate+TEAExtensions.h
// TEAChartDemo
//
// Created by Xhacker Liu on 1/31/14.
// Copyright (c) 2014 Xhacker. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSDate (TEAExtensions)

- (NSDate *)tea_nextDay;

@end
22 changes: 22 additions & 0 deletions TEAChart/NSDate+TEAExtensions.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
//
// NSDate+TEAExtensions.m
// TEAChartDemo
//
// Created by Xhacker Liu on 1/31/14.
// Copyright (c) 2014 Xhacker. All rights reserved.
//

#import "NSDate+TEAExtensions.h"

@implementation NSDate (TEAExtensions)

- (NSDate *)tea_nextDay
{
NSDateComponents *components = [[NSDateComponents alloc] init];
components.day = 1;

NSCalendar *calendar = [NSCalendar currentCalendar];
return [calendar dateByAddingComponents:components toDate:self options:0];
}

@end
6 changes: 3 additions & 3 deletions TEAChart/TEAContributionGraph.m
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
//

#import "TEAContributionGraph.h"
#import "NSDate+TEAExtensions.h"

static const NSInteger kDayInterval = 24 * 3600;
static const NSInteger kDefaultGradeCount = 5;

@interface TEAContributionGraph ()
Expand Down Expand Up @@ -114,7 +114,7 @@ - (void)drawRect:(CGRect)rect

CGContextRef context = UIGraphicsGetCurrentContext();

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comp = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:_graphMonth];
comp.day = 1;
NSDate *firstDay = [calendar dateFromComponents:comp];
Expand All @@ -129,7 +129,7 @@ - (void)drawRect:(CGRect)rect
[weekdayNames[i] drawInRect:CGRectMake(i * (self.width + self.spacing), 0, self.width, self.width) withFont:[UIFont fontWithName:@"HelveticaNeue-Light" size:self.width * 0.65] lineBreakMode:NSLineBreakByClipping alignment:NSTextAlignmentCenter];
}

for (NSDate *date = firstDay; [date compare:nextMonth] == NSOrderedAscending; date = [date dateByAddingTimeInterval:kDayInterval]) {
for (NSDate *date = firstDay; [date compare:nextMonth] == NSOrderedAscending; date = [date tea_nextDay]) {
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comp = [calendar components:NSCalendarUnitWeekday | NSCalendarUnitWeekOfMonth | NSCalendarUnitDay fromDate:date];
NSInteger weekday = comp.weekday;
Expand Down
6 changes: 6 additions & 0 deletions TEAChartDemo.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
1A1149B018312D610015BDE2 /* TEAContributionGraph.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A1149AF18312D610015BDE2 /* TEAContributionGraph.m */; };
1A1149B3183134F40015BDE2 /* TEAClockChart.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A1149B2183134F40015BDE2 /* TEAClockChart.m */; };
1A1149B618313ABB0015BDE2 /* TEATimeRange.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A1149B518313ABB0015BDE2 /* TEATimeRange.m */; };
1AADE620189B990A00EB7C2C /* NSDate+TEAExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AADE61F189B990A00EB7C2C /* NSDate+TEAExtensions.m */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
Expand Down Expand Up @@ -66,6 +67,8 @@
1A1149B2183134F40015BDE2 /* TEAClockChart.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TEAClockChart.m; path = TEAChart/TEAClockChart.m; sourceTree = "<group>"; };
1A1149B418313ABB0015BDE2 /* TEATimeRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TEATimeRange.h; path = TEAChart/TEATimeRange.h; sourceTree = "<group>"; };
1A1149B518313ABB0015BDE2 /* TEATimeRange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TEATimeRange.m; path = TEAChart/TEATimeRange.m; sourceTree = "<group>"; };
1AADE61E189B990A00EB7C2C /* NSDate+TEAExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSDate+TEAExtensions.h"; path = "TEAChart/NSDate+TEAExtensions.h"; sourceTree = "<group>"; };
1AADE61F189B990A00EB7C2C /* NSDate+TEAExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSDate+TEAExtensions.m"; path = "TEAChart/NSDate+TEAExtensions.m"; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -178,6 +181,8 @@
1A1149B2183134F40015BDE2 /* TEAClockChart.m */,
1A1149B418313ABB0015BDE2 /* TEATimeRange.h */,
1A1149B518313ABB0015BDE2 /* TEATimeRange.m */,
1AADE61E189B990A00EB7C2C /* NSDate+TEAExtensions.h */,
1AADE61F189B990A00EB7C2C /* NSDate+TEAExtensions.m */,
);
name = TEAChart;
sourceTree = "<group>";
Expand Down Expand Up @@ -280,6 +285,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
1AADE620189B990A00EB7C2C /* NSDate+TEAExtensions.m in Sources */,
1A11498B18311D120015BDE2 /* TEAViewController.m in Sources */,
1A1149AB18311DA10015BDE2 /* TEABarChart.m in Sources */,
1A11498118311D120015BDE2 /* main.m in Sources */,
Expand Down

0 comments on commit 32ce014

Please sign in to comment.