Show
Ignore:
Timestamp:
08/19/08 00:07:21 (5 months ago)
Author:
hobu
Message:

handle leap year correctly #71

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/python/liblas/header.py

    r813 r848  
    4646import vlr 
    4747 
     48def leap_year(year): 
     49    if (year % 400) == 0: 
     50        return True 
     51    elif (year % 100) == 0: 
     52        return True 
     53    elif (year % 4) == 0: 
     54        return True 
     55    return False 
     56     
    4857class Header(object): 
    4958    def __init__(self, owned=True, handle=None): 
     
    139148        day = core.las.LASHeader_GetCreationDOY(self.handle) 
    140149        year = core.las.LASHeader_GetCreationYear(self.handle) 
    141          
    142150        if year == 0 and day == 0: 
    143151            return None 
    144          
    145         return datetime.datetime(year,1,1)+datetime.timedelta(day) 
     152        if not leap_year(year): 
     153            return datetime.datetime(year,1,1)+datetime.timedelta(day) 
     154        else: 
     155            return datetime.datetime(year,1,1)+datetime.timedelta(day-1) 
    146156    def set_date(self, value=datetime.datetime.now()): 
    147157        """Set the header's date from a datetime.datetime instance. 
     
    159169        """ 
    160170        delta = value - datetime.datetime(value.year,1,1) 
    161         core.las.LASHeader_SetCreationDOY(self.handle, delta.days) 
     171        if not leap_year(value.year): 
     172            core.las.LASHeader_SetCreationDOY(self.handle, delta.days) 
     173        else: 
     174            core.las.LASHeader_SetCreationDOY(self.handle, delta.days + 1) 
    162175        core.las.LASHeader_SetCreationYear(self.handle, value.year) 
    163176    date = property(get_date, set_date)