A Ruby class for describing and interacting with timeframes.

Real-world usage

Brighter Planet logo

We use timeframe for data science at Brighter Planet and in production at

Originally proposed to us by the awesome programmers at fingertips

Based on ISO 8601

As documented by wikipedia, time intervals are like:

  1. Start and end, such as 2007-03-01T13:00:00Z/2008-05-11T15:30:00Z
  2. Start and duration, such as 2007-03-01T13:00:00Z/P1Y2M10DT2H30M
  3. Duration and end, such as P1Y2M10DT2H30M/2008-05-11T15:30:00Z
  4. Duration only, such as P1Y2M10DT2H30M, with additional context information [not supported]

or more simply

<duration> [not supported]


Currently the end result is precise to 1 day, so these are the same:

  • 2007-03-01T00:00:00Z/2008-05-11T00:00:00Z
  • 2007-03-01/2008-05-11

This may change in the future.




Thanks to @artemk for https://github.com/rossmeissl/timeframe/pull/5

Copyright (c) 2012 Andy Rossmeissl, Seamus Abshere