from pyboost.date_time import local_time from pyboost.date_time import to_simple_string #Date programming weekstart = gregorian.date(2002, date_time.Feb, 1) print 'weekstart: ', to_simple_string(weekstart) weekend = weekstart + gregorian.weeks(1) print 'weekend: ', to_simple_string(weekend) today = gregorian.day_clock.local_day() d2 = weekstart + gregorian.days(5) if d2 >= today: #comparison operator pass thisWeek = gregorian.date_period(today, d2) if thisWeek.contains(today): pass #date generator functions d5 = gregorian.next_weekday(today, date_time.Sunday) #calculate Sunday following d4 print 'd5: ', to_simple_string(d5) #US labor day is first Monday in Sept first = gregorian.nth_day_of_the_week_in_month.first labor_day = gregorian.nth_day_of_the_week_in_month(first, date_time.Monday, date_time.Sep) #calculate a specific date for 2004 from functor print 'labor day 2004: ', to_simple_string(labor_day.get_date(2004))
def test_period(self): d1 = gregorian.date(2000, date_time.Jan, 1) d2 = gregorian.date(2000, date_time.Jan, 4) p1 = gregorian.date_period(d1, d2) p2 = gregorian.date_period(d1, gregorian.date_duration(3)) self.failUnless(p1 == p2) self.failUnless(p1.begin() == d1) self.failUnless(p1.last() == d2 - gregorian.date_duration(1)) self.failUnless(p1.end() == d2) self.failUnless(p2.length() == gregorian.date_duration(3)) self.failUnless(p1.contains(d1)) self.failUnless(not p1.contains(d2)) p3 = gregorian.date_period(gregorian.date(2000, date_time.Jan, 4), gregorian.date(2000, date_time.Feb, 1)) self.failUnless(not (p1 == p3)) self.failUnless(p1 < p3) self.failUnless(p3 > p1) self.failUnless(p3 != p1) self.failUnless(p1.intersects(p1)) self.failUnless(not p1.intersects(p3)) self.failUnless(not p3.intersects(p1)) p4 = gregorian.date_period(gregorian.date(1999, date_time.Dec, 1), d2) self.failUnless(p1.intersects(p4)) self.failUnless(p4.intersects(p1)) p5 = gregorian.date_period(gregorian.date(1999, date_time.Dec, 1), gregorian.date(2000, date_time.Dec, 31)) self.failUnless(p1.intersects(p5)) self.failUnless(p5.intersects(p1)) p6 = gregorian.date_period(gregorian.date(2000, date_time.Jan, 1), gregorian.date(2000, date_time.Dec, 31)) self.failUnless(p5.contains(p6)) self.failUnless(p6.contains(p6)) self.failUnless(not p6.contains(p5)) fourDays = gregorian.date_duration(4) p1.shift(fourDays) shifted = gregorian.date_period(gregorian.date(2000, date_time.Jan, 5), gregorian.date(2000, date_time.Jan, 8)) self.failUnless(p1 == shifted) i1 = gregorian.date_period(gregorian.date(2000, date_time.Jan, 5), gregorian.date(2000, date_time.Jan, 10)) i2 = gregorian.date_period(gregorian.date(2000, date_time.Jan, 1), gregorian.date(2000, date_time.Jan, 7)) r1 = gregorian.date_period(gregorian.date(2000, date_time.Jan, 5), gregorian.date(2000, date_time.Jan, 7)) self.failUnless(i1.intersection(i2) == r1) self.failUnless(i2.intersection(i1) == r1) i3 = gregorian.date_period(gregorian.date(2000, date_time.Jan, 1), gregorian.date(2000, date_time.Jan, 15)) self.failUnless(i1.intersection(i3) == i1) self.failUnless(i3.intersection(i1) == i1) i4 = gregorian.date_period(gregorian.date(2000, date_time.Jan, 7), gregorian.date(2000, date_time.Jan, 10)) i5 = gregorian.date_period(gregorian.date(2000, date_time.Jan, 6), gregorian.date(2000, date_time.Jan, 9)) self.failUnless(i1.intersection(i5) == i5) self.failUnless(i5.intersection(i1) == i5) self.failUnless(i2.intersection(i4).is_null()) r3 = gregorian.date_period(gregorian.date(2000, date_time.Jan, 1), gregorian.date(2000, date_time.Jan, 10)) self.failUnless(i1.merge(i2) == r3) self.failUnless(i2.merge(i4).is_null()) r4 = gregorian.date_period(gregorian.date(2000, date_time.Jan, 5), gregorian.date(2000, date_time.Jan, 10)) self.failUnless(i1.merge(i5) == r4) self.failUnless(i1.span(i2) == r3) self.failUnless(i2.span(i4) == r3) self.failUnless(i4.span(i2) == r3) self.failUnless(i3.span(i2) == i3) i6 = gregorian.date_period(gregorian.date(2000, date_time.Jan, 1), gregorian.date(2000, date_time.Jan, 2)) self.failUnless(i6.span(i4) == r3) self.failUnless(i4.span(i6) == r3) bf_start = gregorian.date(2000, date_time.Jan, 5) bf_end = gregorian.date(2000, date_time.Jan, 10) bf_before = gregorian.date(2000, date_time.Jan, 4) bf_after = gregorian.date(2000, date_time.Jan, 11) bf_during = gregorian.date(2000, date_time.Jan, 7) bfp1 = gregorian.date_period(bf_start, bf_end) self.failUnless(not bfp1.is_before(bf_start)) self.failUnless(bfp1.is_before(bf_end)) self.failUnless(not bfp1.is_before(bfp1.last())) self.failUnless(not bfp1.is_before(bf_before)) self.failUnless(not bfp1.is_before(bf_during)) self.failUnless(bfp1.is_before(bf_after)) self.failUnless(not bfp1.is_after(bf_start)) self.failUnless(not bfp1.is_after(bf_end)) self.failUnless(not bfp1.is_after(bfp1.last())) self.failUnless(bfp1.is_after(bf_before)) self.failUnless(not bfp1.is_after(bf_during)) self.failUnless(not bfp1.is_after(bf_after)) adj1 = gregorian.date_period(gregorian.date(2000, date_time.Jan, 5), gregorian.date(2000, date_time.Jan, 10)) adj2 = gregorian.date_period(gregorian.date(2000, date_time.Jan, 1), gregorian.date(2000, date_time.Jan, 5)) adj3 = gregorian.date_period(gregorian.date(2000, date_time.Jan, 7), gregorian.date(2000, date_time.Jan, 12)) adj4 = gregorian.date_period(gregorian.date(2000, date_time.Jan, 12), gregorian.date(2000, date_time.Jan, 15)) adj5 = gregorian.date_period(gregorian.date(2000, date_time.Jan, 1), gregorian.date(2000, date_time.Jan, 3)) adj6 = gregorian.date_period(gregorian.date(2000, date_time.Jan, 7), gregorian.date(2000, date_time.Jan, 9)) self.failUnless(adj1.is_adjacent(adj2)) self.failUnless(adj2.is_adjacent(adj1)) self.failUnless(not adj1.is_adjacent(adj3)) self.failUnless(not adj3.is_adjacent(adj1)) self.failUnless(not adj1.is_adjacent(adj4)) self.failUnless(not adj4.is_adjacent(adj1)) self.failUnless(not adj1.is_adjacent(adj5)) self.failUnless(not adj5.is_adjacent(adj1)) self.failUnless(not adj1.is_adjacent(adj6)) self.failUnless(not adj6.is_adjacent(adj1))
from pyboost.date_time import local_time from pyboost.date_time import to_simple_string # Date programming weekstart = gregorian.date(2002, date_time.Feb, 1) print "weekstart: ", to_simple_string(weekstart) weekend = weekstart + gregorian.weeks(1) print "weekend: ", to_simple_string(weekend) today = gregorian.day_clock.local_day() d2 = weekstart + gregorian.days(5) if d2 >= today: # comparison operator pass thisWeek = gregorian.date_period(today, d2) if thisWeek.contains(today): pass # date generator functions d5 = gregorian.next_weekday(today, date_time.Sunday) # calculate Sunday following d4 print "d5: ", to_simple_string(d5) # US labor day is first Monday in Sept first = gregorian.nth_day_of_the_week_in_month.first labor_day = gregorian.nth_day_of_the_week_in_month(first, date_time.Monday, date_time.Sep) # calculate a specific date for 2004 from functor print "labor day 2004: ", to_simple_string(labor_day.get_date(2004)) # Time programming:
def test_period(self): d1 = gregorian.date(2000,date_time.Jan,1) d2 = gregorian.date(2000,date_time.Jan,4) p1 = gregorian.date_period(d1,d2) p2 = gregorian.date_period(d1,gregorian.date_duration(3) ) self.failUnless( p1 == p2) self.failUnless( p1.begin() == d1) self.failUnless( p1.last() == d2-gregorian.date_duration(1) ) self.failUnless( p1.end() == d2) self.failUnless( p2.length() == gregorian.date_duration(3) ) self.failUnless( p1.contains(d1) ) self.failUnless( not p1.contains(d2) ) p3 = gregorian.date_period( gregorian.date(2000,date_time.Jan,4) , gregorian.date(2000,date_time.Feb,1) ) self.failUnless( not (p1 == p3) ) self.failUnless( p1 < p3) self.failUnless( p3 > p1) self.failUnless( p3 != p1) self.failUnless( p1.intersects(p1) ) self.failUnless( not p1.intersects(p3) ) self.failUnless( not p3.intersects(p1) ) p4 = gregorian.date_period(gregorian.date(1999,date_time.Dec,1), d2) self.failUnless( p1.intersects(p4) ) self.failUnless( p4.intersects(p1) ) p5 = gregorian.date_period(gregorian.date(1999,date_time.Dec,1) , gregorian.date(2000,date_time.Dec,31) ) self.failUnless( p1.intersects(p5) ) self.failUnless( p5.intersects(p1) ) p6 = gregorian.date_period(gregorian.date(2000,date_time.Jan,1) ,gregorian.date(2000,date_time.Dec,31) ) self.failUnless( p5.contains(p6) ) self.failUnless( p6.contains(p6) ) self.failUnless( not p6.contains(p5) ) fourDays = gregorian.date_duration(4) p1.shift(fourDays) shifted = gregorian.date_period(gregorian.date(2000,date_time.Jan,5) , gregorian.date(2000,date_time.Jan,8) ) self.failUnless( p1 == shifted) i1 = gregorian.date_period(gregorian.date(2000,date_time.Jan,5) , gregorian.date(2000,date_time.Jan,10) ) i2 = gregorian.date_period(gregorian.date(2000,date_time.Jan,1) , gregorian.date(2000,date_time.Jan,7) ) r1 = gregorian.date_period(gregorian.date(2000,date_time.Jan,5) , gregorian.date(2000,date_time.Jan,7) ) self.failUnless( i1.intersection(i2) == r1) self.failUnless( i2.intersection(i1) == r1) i3 = gregorian.date_period(gregorian.date(2000,date_time.Jan,1) , gregorian.date(2000,date_time.Jan,15) ) self.failUnless( i1.intersection(i3) == i1) self.failUnless( i3.intersection(i1) == i1) i4 = gregorian.date_period(gregorian.date(2000,date_time.Jan,7), gregorian.date(2000,date_time.Jan,10) ) i5 = gregorian.date_period(gregorian.date(2000,date_time.Jan,6) , gregorian.date(2000,date_time.Jan,9) ) self.failUnless( i1.intersection(i5) == i5) self.failUnless( i5.intersection(i1) == i5) self.failUnless( i2.intersection(i4).is_null() ) r3 = gregorian.date_period(gregorian.date(2000,date_time.Jan,1), gregorian.date(2000,date_time.Jan,10) ) self.failUnless( i1.merge(i2) == r3) self.failUnless( i2.merge(i4).is_null() ) r4 = gregorian.date_period(gregorian.date(2000,date_time.Jan,5), gregorian.date(2000,date_time.Jan,10) ) self.failUnless( i1.merge(i5) == r4) self.failUnless( i1.span(i2) == r3) self.failUnless( i2.span(i4) == r3) self.failUnless( i4.span(i2) == r3) self.failUnless( i3.span(i2) == i3) i6 = gregorian.date_period(gregorian.date(2000,date_time.Jan,1), gregorian.date(2000,date_time.Jan,2) ) self.failUnless( i6.span(i4) == r3) self.failUnless( i4.span(i6) == r3) bf_start = gregorian.date(2000,date_time.Jan,5) bf_end = gregorian.date(2000,date_time.Jan,10) bf_before = gregorian.date(2000,date_time.Jan,4) bf_after = gregorian.date(2000,date_time.Jan,11) bf_during = gregorian.date(2000, date_time.Jan, 7) bfp1 = gregorian.date_period(bf_start, bf_end) self.failUnless( not bfp1.is_before(bf_start) ) self.failUnless( bfp1.is_before(bf_end) ) self.failUnless( not bfp1.is_before(bfp1.last() )) self.failUnless( not bfp1.is_before(bf_before) ) self.failUnless( not bfp1.is_before(bf_during) ) self.failUnless( bfp1.is_before(bf_after) ) self.failUnless( not bfp1.is_after(bf_start) ) self.failUnless( not bfp1.is_after(bf_end) ) self.failUnless( not bfp1.is_after(bfp1.last() )) self.failUnless( bfp1.is_after(bf_before) ) self.failUnless( not bfp1.is_after(bf_during) ) self.failUnless( not bfp1.is_after(bf_after) ) adj1 = gregorian.date_period( gregorian.date(2000,date_time.Jan,5) , gregorian.date(2000,date_time.Jan,10) ) adj2 = gregorian.date_period (gregorian.date(2000,date_time.Jan,1), gregorian.date(2000,date_time.Jan,5) ) adj3 = gregorian.date_period(gregorian.date(2000,date_time.Jan,7), gregorian.date(2000,date_time.Jan,12) ) adj4 = gregorian.date_period(gregorian.date(2000,date_time.Jan,12), gregorian.date(2000,date_time.Jan,15) ) adj5 = gregorian.date_period(gregorian.date(2000,date_time.Jan,1), gregorian.date(2000,date_time.Jan,3) ) adj6 = gregorian.date_period(gregorian.date(2000,date_time.Jan,7), gregorian.date(2000,date_time.Jan,9) ) self.failUnless( adj1.is_adjacent(adj2) ) self.failUnless( adj2.is_adjacent(adj1) ) self.failUnless( not adj1.is_adjacent(adj3) ) self.failUnless( not adj3.is_adjacent(adj1) ) self.failUnless( not adj1.is_adjacent(adj4) ) self.failUnless( not adj4.is_adjacent(adj1) ) self.failUnless( not adj1.is_adjacent(adj5) ) self.failUnless( not adj5.is_adjacent(adj1) ) self.failUnless( not adj1.is_adjacent(adj6) ) self.failUnless( not adj6.is_adjacent(adj1) )