def monthly_iter(start, end):
    """
    Iterates on a monthly basis, and wraps around dateutil.rrule

    Example:
    In [1]: from zc_common import timezone

    In [2]: for m in timezone.monthly_iter(timezone.datetime(2014, 10, 1), timezone.now()):
    ...:     print m
    ...:
    2014-10-01 00:00:00-07:00
    2014-11-01 00:00:00-07:00

    In [3]: for m in timezone.monthly_iter(timezone.datetime(2014, 10, 19), timezone.now()):
    ...:     print m
    ...:
    2014-10-19 00:00:00-07:00

    In [4]: timezone.now()
    Out[4]: datetime.datetime(
        2014, 11, 18, 16, 36, 54, 994666, tzinfo=<DstTzInfo 'America/Los_Angeles' PST-1 day, 16:00:00 STD>)
    """
    from dateutil import rrule
    for date in rrule.rrule(rrule.MONTHLY, dtstart=start, until=end):
        yield date
