def get_file_date(fname, fdate): """Gets the date from a file name. Parameters ---------- fname : str Filename. fdate : str Structure of the date in filename, dict which points to the date fields in the filename. Returns ------- datetime Date and, if given, time from filename """ fname = str(fname) if 'YYYY' in fdate.keys(): year = int(fname[fdate['YYYY'][0]:fdate['YYYY'][1]]) if 'MM' in fdate.keys(): month = int(fname[fdate['MM'][0]:fdate['MM'][1]]) if 'DD' in fdate.keys(): day = int(fname[fdate['DD'][0]:fdate['DD'][1]]) else: day = 1 if 'P' in fdate.keys(): dekad = int(fname[fdate['P'][0]:fdate['P'][1]]) day = dekad2day(year, month, dekad) if 'RP' in fdate.keys(): dat = runningdekad2date(year, int(fname[fdate['RP'][0]:fdate['RP'][1]])) month = dat.month day = dat.day if 'hh' in fdate.keys(): hour = int(fname[fdate['hh'][0]:fdate['hh'][1]]) else: hour = 0 if 'mm' in fdate.keys(): minute = int(fname[fdate['mm'][0]:fdate['mm'][1]]) else: minute = 0 if 'ss' in fdate.keys(): second = int(fname[fdate['ss'][0]:fdate['ss'][1]]) else: second = 0 return datetime(year, month, day, hour, minute, second)
def test_dekad2day(self): assert dk.dekad2day(2000, 2, 1) == 10 assert dk.dekad2day(2000, 2, 2) == 20 assert dk.dekad2day(2000, 2, 3) == 29