Attributes | |

`duration` | Source Code`shared formal Duration duration` Returns the Duration between Example: Given: today().to(tomorrow).duration then duration is 86400000 milliseconds. Given: tomorrow().to(today).duration then duration is -86400000 milliseconds. |

`from` | Source Code`shared formal Element from` The first Element returned by the iterator, if any.
This should always produce the same value as
Example: today().to(tomorrow) -> in this case today() is the caller/creator of the range. |

`hash` | Source Code`shared actual default Integer hash` This implementation respect the constraint that if Refines `Object.hash` |

`period` | Source Code`shared formal Period period` Returns the Period between Example: Given: today().to(tomorrow).duration then duration is 1 day. Given: tomorrow().to(today).duration then duration is -1 day. |

`step` | Source Code`shared formal UnitOfDate|UnitOfTime step` Customized way to iterate over each element, it does not interfer in |

`string` | Source Code`shared actual default String string` Returns ISO-8601 formatted String representation of this Range. Reference: https://en.wikipedia.org/wiki/ISO_8601#Time_intervals |

`to` | Source Code`shared formal Element to` The limit of the Range where. Example: Given: today().to(tomorrow) then tomorrow is the Given: tomorrow.to(today()) then today() is the |

Inherited Attributes |

Attributes inherited from: `Iterable<Element,Absent>` |

Methods | |

`equals` | Source Code`shared actual default Boolean equals(Object other)` Returns true if both: this and other are same type and have equal fields Refines `Object.equals` |

`gap` | Source Code`shared formal Range<Element,StepBy>|[] gap(Range<Element,StepBy> other)` Returns empty or a new Range: - Each Range is considered a
*set*then [A..B] is equivalent to [B..A] - The precision is based on the lowest unit
- When the new Range exists it will follow these rules:
Given: [A..B] gap [C..D] When: AB < CD [1..2] gap [5..6] = (2,5) [1..2] gap [6..5] = (2,5) [2..1] gap [5..6] = (2,5) [2..1] gap [6..5] = (2,5) Given: [A..B] gap [C..D] When: AB > CD [5..6] gap [1..2] = (2,5) [5..6] gap [2..1] = (2,5) [6..5] gap [1..2] = (2,5) [6..5] gap [2..1] = (2,5) |

`overlap` | Source Code`shared formal Range<Element,StepBy>|[] overlap(Range<Element,StepBy> other)` Returns empty or a new Range: - Each Range is considered a
*set*then [A..B] is equivalent to [B..A] - The precision is based on the lowest unit
- When the new Range exists it will follow these rules:
Given: [A..B] overlap [C..D] When: AB < CD [1..6] overlap [3..9] = [3,6] [1..6] overlap [9..3] = [3,6] [6..1] overlap [3..9] = [3,6] [6..1] overlap [9..3] = [3,6] Given: [A..B] overlap [C..D] When: AB > CD [3..9] overlap [1..6] = [3,6] [3..9] overlap [6..1] = [3,6] [9..3] overlap [1..6] = [3,6] [9..3] overlap [6..1] = [3,6] |

`stepBy` | Source Code`shared formal Range<Element,StepBy> stepBy(StepBy step)` Define how this Range will get next or previous element while iterating. |

Inherited Methods |

Methods inherited from: `Category<Element>` |

Methods inherited from: `Iterable<Element,Absent>` `Iterable.any()` , `Iterable.by()` , `Iterable.chain()` , `Iterable.collect()` , `Iterable.count()` , `Iterable.defaultNullElements()` , `Iterable.every()` , `Iterable.filter()` , `Iterable.find()` , `Iterable.findLast()` , `Iterable.flatMap()` , `Iterable.fold()` , `Iterable.follow()` , `Iterable.getFromFirst()` , `Iterable.interpose()` , `Iterable.iterator()` , `Iterable.longerThan()` , `Iterable.map()` , `Iterable.max()` , `Iterable.partition()` , `Iterable.product()` , `Iterable.reduce()` , `Iterable.repeat()` , `Iterable.scan()` , `Iterable.select()` , `Iterable.sequence()` , `Iterable.shorterThan()` , `Iterable.skip()` , `Iterable.skipWhile()` , `Iterable.sort()` , `Iterable.spread()` , `Iterable.take()` , `Iterable.takeWhile()` |