/TimeMachine

Python module for commonly-used Date manipulations

Primary LanguagePythonBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

TimeMachine is a simple module with a TimeMachine class that has several date
manipulation methods you might find useful. It uses the datetime and calendar modules, 
and if nothing else can provide pointers on how to do these calculations in your own code, 
without using an external module. 

This is not a complete work, and isn't meant to be exhaustive.  If you need
that, use dateutil :) 

Here are some usage examples from the doctests (which contain more examples as well)

The examples assume you've already run 'from TimeMachine import TimeMachine'

        >>> tm = TimeMachine()
        >>> n = datetime.datetime(2010, 7, 5)    # a Monday
        >>> tm.get_next_byday('Monday', n)
        datetime.datetime(2010, 7, 12, 0, 0)

        >>> tm = TimeMachine()
        >>> n = datetime.datetime(2010, 7, 6)
        >>> tm.get_previous_byday('Sunday', n)
        datetime.datetime(2010, 7, 4, 0, 0)

        >>> tm = TimeMachine()
        >>> n = datetime.datetime(2010, 7, 9)
        >>> tm.get_current_week_range(n)
        (datetime.datetime(2010, 7, 4, 0, 0), datetime.datetime(2010, 7, 10, 0, 0))

        >>> tm = TimeMachine()
        >>> n = datetime.datetime(2010, 7, 5)
        >>> tm.get_previous_week(n)
        (datetime.datetime(2010, 6, 27, 0, 0), datetime.datetime(2010, 7, 3, 0, 0))

        >>> tm = TimeMachine()
        >>> n = datetime.datetime(2010, 7, 5)
        >>> tm.get_next_week(n)
        (datetime.datetime(2010, 7, 11, 0, 0), datetime.datetime(2010, 7, 17, 0, 0))

        >>> tm = TimeMachine()
        >>> n = datetime.datetime(2010, 7, 12)
        >>> tm.get_current_month_range(n)
        (datetime.datetime(2010, 7, 1, 0, 0), datetime.datetime(2010, 7, 31, 0, 0))

        >>> tm = TimeMachine()
        >>> n = datetime.datetime(2010, 7, 5)
        >>> tm.get_previous_month(n)
        (datetime.datetime(2010, 6, 1, 0, 0), datetime.datetime(2010, 6, 30, 0, 0))

        >>> tm = TimeMachine()
        >>> n = datetime.datetime(2010, 7, 5)
        >>> tm.get_next_month(n)
        (datetime.datetime(2010, 8, 1, 0, 0), datetime.datetime(2010, 8, 31, 0, 0))

        >>> tm = TimeMachine()
        >>> n = datetime.datetime(2010, 7, 5)
        >>> tm.get_n_days_ago(n, 3)
        datetime.datetime(2010, 7, 2, 0, 0)

        >>> tm = TimeMachine()
        >>> n = datetime.datetime(2010, 7, 5)
        >>> tm.get_n_days_ahead(n, 2)
        datetime.datetime(2010, 7, 7, 0, 0)

        >>> tm = TimeMachine()
        >>> n = '2010-07-05'
        >>> tm.get_date_from_string(n, '%Y-%m-%d')
        datetime.datetime(2010, 7, 5, 0, 0)