 // MARK: - Calculate beginning of time unit
     
     /**
+        Creates a new date at the first second of the same hour as the given date
+    
+        :param: date The new date for which to calculate the beginning of the hour
+    
+        :returns: The newly created date representing the first second of the hour
+    */
+    private func beginningOfHour(date:NSDate) -> NSDate {
+        let components = self.calendar.components(
+            (NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitDay | NSCalendarUnit.CalendarUnitHour), fromDate: date
+        )
+        
+        return self.calendar.dateFromComponents(components)!
+    }
+    
+    /**
         Creates a new date at the first second of the same day as the given date
     
         :param: date The date for which to calculate the beginning of the day
     
-        :returns: The newly created date representing the first second of the 
-            day
+        :returns: The newly created date representing the first second of the day
     */
     private func beginningOfDay(date:NSDate) -> NSDate {
         let components = self.calendar.components(

    
    
// MARK: - Build time units
    
    /**
        Creates an array of dates at the first second of each hour of the day of

    
        :param: date The date for which to calculate the beginning of the month
    
        :returns: The newly created date representing the first second of the month
    */
    private func beginningOfMonth(date:NSDate) -> NSDate {
        let components = self.calendar.components((NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitMonth), fromDate: date)
