github.com/archlabjp/eeslism-go@v0.0.0-20231109122333-4bb7bfcdf292/eeslism/u_day.go (about)

     1  /* ================================================================
     2  
     3   SUNLIB
     4  
     5    太陽位置および日射量計算用ライブラリ-
     6    (宇田川、パソコンによる空気調和計算法、プログラム4.1の C 言語版, ANSI C 版)
     7  
     8  ---------------------------------------------------------------- */
     9  
    10  package eeslism
    11  
    12  // Mo月No日が1月1日から数えて何日目か(通日)を返す
    13  // 1月1日は1である。
    14  func FNNday(Mo int, Nd int) int {
    15  	if Mo < 1 || Nd < 1 || Mo > 13 || Nd > 31 {
    16  		panic("適切な月日を指定してください。")
    17  	}
    18  	var Mo2, Mo3 int
    19  	if Mo < 3 {
    20  		Mo2 = 1
    21  		Mo3 = 0
    22  	} else {
    23  		Mo2 = 0
    24  		Mo3 = 1
    25  	}
    26  	return int((153*(Mo-1)+2*(Mo2)-9*(Mo3))/5 + Nd)
    27  }