Example #1
0
    def test_dst_transition_day_rule(self):
        rule1 = local_time.partial_date_dst_rule( 
                    gregorian.partial_date(30, date_time.Apr)
                    , gregorian.partial_date(30, date_time.Oct))
        self.failUnless( rule1.start_day(2001) == gregorian.date(2001, date_time.Apr, 30))
        self.failUnless( rule1.end_day(2001) == gregorian.date(2001, date_time.Oct, 30))
    
        rule2 = local_time.first_last_dst_rule(
                    local_time.first_last_dst_rule.start_rule(date_time.Sunday, date_time.Apr)
                    , local_time.first_last_dst_rule.end_rule(date_time.Sunday, date_time.Oct))

        self.failUnless( rule2.start_day(2001) == gregorian.date(2001, date_time.Apr, 1))
        self.failUnless( rule2.end_day(2001) == gregorian.date(2001, date_time.Oct, 28))

        rule3 = local_time.last_last_dst_rule(
                    local_time.last_last_dst_rule.start_rule(date_time.Sunday, date_time.Mar)
                    , local_time.last_last_dst_rule.end_rule(date_time.Sunday, date_time.Oct))

        self.failUnless( rule3.start_day(2001) == gregorian.date(2001, date_time.Mar, 25))
        self.failUnless( rule3.end_day(2001) == gregorian.date(2001, date_time.Oct, 28) )
  
        nkday = gregorian.nth_kday_of_month
        rule4 = local_time.nth_last_dst_rule(
                    local_time.nth_last_dst_rule.start_rule(nkday.first, date_time.Sunday, date_time.Mar)
                    , local_time.nth_last_dst_rule.end_rule(date_time.Sunday, date_time.Oct))
  
        self.failUnless( rule4.start_day(2001) == gregorian.date(2001, date_time.Mar, 4))
        self.failUnless( rule4.end_day(2001) == gregorian.date(2001, date_time.Oct, 28))

        rule5 = local_time.nth_kday_dst_rule(
                    local_time.nth_kday_dst_rule.start_rule(nkday.first, date_time.Sunday, date_time.Mar)
                    , local_time.nth_kday_dst_rule.end_rule(nkday.fourth, date_time.Sunday, date_time.Oct))
  
        self.failUnless( rule5.start_day(2001) == gregorian.date(2001, date_time.Mar, 4))
        self.failUnless( rule5.end_day(2001) == gregorian.date(2001, date_time.Oct, 28))
Example #2
0
    def test_custom_time_zone( self ):
        rule1 = local_time.partial_date_dst_rule(
                    gregorian.partial_date(30, date_time.Apr)
                    , gregorian.partial_date(30, date_time.Oct))
  
        rule2 = local_time.first_last_dst_rule(
                    local_time.first_last_dst_rule.start_rule( date_time.Sunday, date_time.Apr)
                    , local_time.first_last_dst_rule.end_rule( date_time.Sunday, date_time.Oct))
        
        rule3 = local_time.last_last_dst_rule(
                    local_time.last_last_dst_rule.start_rule(date_time.Sunday, date_time.Mar)
                    , local_time.last_last_dst_rule.end_rule(date_time.Sunday, date_time.Oct))
        
        rule4 = None

        pst = local_time.time_zone_names( "Pacific Standard Time"
                                          , "PST"
                                          , "Pacific Daylight Time" 
                                          , "PDT" )
        
        mst = local_time.time_zone_names( "Mountain Standard Time"
                                          , "MST"
                                          , "" 
                                          , "" )
  
        of = local_time.dst_adjustment_offsets( posix_time.hours(1)
                                                , posix_time.hours(2)
                                                , posix_time.hours(2))
        of2 = local_time.dst_adjustment_offsets( posix_time.hours(0)
                                                 , posix_time.hours(0)
                                                 , posix_time.hours(0))

        tz1 = local_time.custom_time_zone(pst, posix_time.hours(-8), of, rule1)
        tz2 = local_time.custom_time_zone(pst, posix_time.hours(-8), of, rule2)
        tz3 = local_time.custom_time_zone(pst, posix_time.hours(-8), of, rule3)
        tz4 = local_time.custom_time_zone(mst, posix_time.hours(-7), of2, rule4)


        self.failUnless( tz1.dst_zone_abbrev() == "PDT" )
        self.failUnless( tz1.std_zone_abbrev() == "PST" )
        self.failUnless( tz1.std_zone_name() == "Pacific Standard Time" )
        self.failUnless( tz1.dst_zone_name() == "Pacific Daylight Time" )
        
        self.failUnless( tz1.dst_offset() == posix_time.hours(1) )
        self.failUnless( tz1.base_utc_offset() == posix_time.hours(-8) )
        self.failUnless( tz1.has_dst() )
        
        self.failUnless( tz1.dst_local_start_time(2003) 
                         == posix_time.ptime( gregorian.date(2003, date_time.Apr,30)
                                              , posix_time.hours(2) ) )
        
        self.failUnless( tz1.dst_local_end_time(2003) 
                         == posix_time.ptime( gregorian.date(2003, date_time.Oct,30)
                                              , posix_time.hours(2) ) )
        
        
        self.failUnless( tz1.to_posix_string() == "PST-08PDT+01,120/02:00,303/02:00")
        self.failUnless( tz2.to_posix_string() == "PST-08PDT+01,M4.1.0/02:00,M10.5.0/02:00")
        self.failUnless( tz3.to_posix_string() == "PST-08PDT+01,M3.5.0/02:00,M10.5.0/02:00")
        self.failUnless( tz4.to_posix_string() == "MST-07")
        
        self.failUnless( not tz4.has_dst() )
        
        self.failUnless( tz4.dst_local_start_time(2005) 
                         == posix_time.ptime( date_time.not_a_date_time ) )
        
        self.failUnless( tz4.dst_local_end_time(2005) 
                         == posix_time.ptime( date_time.not_a_date_time ) )