Ignore:
Timestamp:
18/11/06 23:01:07 (13 years ago)
Author:
astephen
Message:

Merged with titania version.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI03-DataExtractor/trunk/pydxc/DateTimeManager.py

    r794 r1715  
    7373    return dt.getTimeBins(timelist) 
    7474 
     75 
     76def convertToSeconds(interval, unit): 
     77    """ 
     78    Returns the number of seconds in the interval. 
     79    Note: year and month are approx values. 
     80    """ 
     81    unit=unit.lower() 
     82    if unit[-1]=="s": unit=unit[:-1] 
     83    if unit=="year":  
     84        secs=365*24*60*60*interval 
     85    elif unit=="month": 
     86        secs=30*24*60*60*interval 
     87    elif unit=="day": 
     88        secs=24*60*60*interval 
     89    elif unit=="hour": 
     90        secs=60*60*interval 
     91    elif unit=="minute": 
     92        secs=60*interval 
     93    elif unit=="second": 
     94        pass 
     95    else: 
     96        raise "Unit not recognised: %s" % unit 
     97    return secs 
     98 
     99 
     100def getAppropriateUnitAndInterval(value, unit): 
     101    """ 
     102    Returns the appropriate time unit nearest to an integer for 
     103    time values that are fractions. 
     104    """ 
     105    if value>=1: 
     106        return (unit, int(value)) 
     107    nsecs=convertToSeconds(value, unit) 
     108    nsecs=int(nsecs) 
     109     
     110    if nsecs<=1: 
     111        (u,i)=("second", 1) 
     112    elif nsecs<=60: 
     113        (u,i)=("second", nsecs) 
     114    elif nsecs<=(60*60): 
     115        (u,i)=("minute", nsecs/60) 
     116    elif nsecs<=(60*60*24): 
     117        (u,i)=("hour", nsecs/60/60) 
     118    elif nsecs<=(60*60*24*30): 
     119        (u,i)=("day", nsecs/60/60/24) 
     120    elif nsecs<=(60*60*24*365): 
     121        (u,i)=("month", nsecs/60/60/24/30) 
     122    else: 
     123        (u,i)=("year", nsecs/60/60/24/365) 
     124    return (u,i) 
     125 
     126 
     127def formatYear(fstring, dateTimeObj): 
     128    """ 
     129    Copes with year outside Unix time epoch. 
     130    """ 
     131    return fstring.replace("%Y", "%.4d" % dateTimeObj[0]) 
    75132 
    76133 
     
    263320        else: 
    264321            monthmap=(None, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) 
    265             return monthmap[month] 
     322            return monthmap[int(month)] 
    266323             
    267324             
     
    290347        #    count=count+1           
    291348        #checkCount=0 
    292         formatstring=time.strftime(formatstring, tuple(list((itime))+[0,1,0])) 
     349        formatstring=formatYear(formatstring, itime) 
     350        # Note the year has been got now so the rest uses a fake year to avoid error outside unix time 
     351        formatstring=time.strftime(formatstring, tuple([2000]+list((itime[1:]))+[0,1,0])) 
    293352        #while formatstring.find("%")>-1:  # Keep in while loop just in case more than one occurrence of a field required 
    294353        #    checkCount=checkCount+1 
Note: See TracChangeset for help on using the changeset viewer.