Changeset 2427 in lmdz_wrf for trunk


Ignore:
Timestamp:
Apr 9, 2019, 8:02:21 PM (7 years ago)
Author:
lfita
Message:

Working version with noleap calendar

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/generic_tools.py

    r2426 r2427  
    524524        if days_month(iyr,2) == 29: Nleapdays=Nleapdays+1
    525525
    526 
    527526    return Nleapdays
    528527
     
    621620    137880.0
    622621    >>> datetimeStr_conversion('-12357.961','cfTimeCal,days since 1949-12-01 00:00:00,noleap','Y/m/d H-M-S')
    623 
     622    1916/02/09 00-56-09
    624623    """
    625624    import datetime as dt
     
    740739            removeleap = False
    741740            newdate = advance_cfDate(refdate, timeval, tunits)
    742             if days_month(newdate.year,2) == 29:
    743                 if newdate.month == 2 and newdate.day == 28:
    744                     removeleap = True
    745                 elif newdate.month > 2: removeleap = True
     741            if int(yrref) <= newdate.year:
     742                Nleapd = leapdays(int(yrref), newdate.year)
     743            else:
     744                Nleapd = leapdays(newdate.year, int(yrref))
     745            removeleap = True
    746746
    747747        if tunits == 'weeks':
    748             if removeleap: timeval = timeval - 1./7.
     748            if removeleap: timeval = timeval + 1./7.*Nleapd
    749749            newdate = refdate + dt.timedelta(weeks=float(timeval))
    750750        elif tunits == 'days':
    751             if removeleap: timeval = timeval - 1.
     751            if removeleap: timeval = timeval + 1.*Nleapd
    752752            newdate = refdate + dt.timedelta(days=float(timeval))
    753753        elif tunits == 'hours':
    754             if removeleap: timeval = timeval - 1.*24.
     754            if removeleap: timeval = timeval + 1.*24.*Nleapd
    755755            newdate = refdate + dt.timedelta(hours=float(timeval))
    756756        elif tunits == 'minutes':
    757757            print 'Lluis here ', removeleap, calendar
    758             if removeleap: timeval = timeval - 1.*24.*60.
     758            if removeleap: timeval = timeval + 1.*24.*60.*Nleapd
    759759            newdate = refdate + dt.timedelta(minutes=float(timeval))
    760760        elif tunits == 'seconds':
    761             if removeleap: timeval = timeval - 1.*24.*3600.
     761            if removeleap: timeval = timeval + 1.*24.*3600.*Nleapd
    762762            newdate = refdate + dt.timedelta(seconds=float(timeval))
    763763        elif tunits == 'milliseconds':
    764             if removeleap: timeval = timeval - 1.*24.*3600.*1000.
     764            if removeleap: timeval = timeval + 1.*24.*3600.*1000.*Nleapd
    765765            newdate = refdate + dt.timedelta(milliseconds=float(timeval))
    766766        else:
Note: See TracChangeset for help on using the changeset viewer.