Example #1
0
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))
Example #2
0
    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))
Example #3
0
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:
Example #4
0
 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) )