Python:日期表達的轉換(day of year & year month day)


我們常用的日期格式是“年月日”型的,即year-month-day,比如今天是2019年9月14日,2019-09-14。

然而,有些地方,比如遙感圖像下載的命名里面,為了數據表示方便,常常是doy(day of year)型的,如圖在地理空間數據雲下載landsat8:

'2019133'表示2019年的第133天,可正常人都不太可能一口說出來這是幾月幾號。

尤其是遙感圖像的批量下載后,沒有那么多耐心來算這玩意兒。因此,建立了倆函數來轉換。

本篇運用的技術含量不高,但是實用。

def date2doy(year,month,day):
            month_leapyear=[31,29,31,30,31,30,31,31,30,31,30,31]
            month_notleap= [31,28,31,30,31,30,31,31,30,31,30,31]
            doy=0

            if month==1:
                  pass
            elif year%4==0 and (year%100!=0 or year%400==0):
                  for i in range(month-1):
                          doy+=month_leapyear[i]
            else:
                  for i in range(month-1):
                          doy+=month_notleap[i]
            doy+=day
            return doy

def doy2date(year,doy):    
       month_leapyear=[31,29,31,30,31,30,31,31,30,31,30,31]
       month_notleap= [31,28,31,30,31,30,31,31,30,31,30,31]

       if year%4==0 and (year%100!=0 or year%400==0):
          for i in range(0,12):
             if doy>month_leapyear[i]:
                 doy-=month_leapyear[i]
                 continue
             if doy<=month_leapyear[i]:
                 month=i+1
                 day=doy
                 break
       else:
          for i in range(0,12):
             if doy>month_notleap[i]:
                 doy-=month_notleap[i]
                 continue
             if doy<=month_notleap[i]:
                 month=i+1
                 day=doy
                 break
       return month,day


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM