ドリリウム

趣味の情報や思いついたことを発信しています。高知 / 釣り / DIY / バイク / 車 / 家具制作 / アクアリウム / コーヒー / 地方移住 / ルノー・ルーテシア / SUZUKI ST250 E typeなど。

趣味の情報や思いついたことを発信しています。高知 / 釣り / DIY / バイク / 車 / 家具制作 / アクアリウム / コーヒー / 地方移住 / ルノー・ルーテシア / SUZUKI ST250 E typeなど。


【PHP】日付から月齢と潮名(大潮や小潮)を計算する

f:id:katamichinijikan:20180714111016p:plain

日付から月齢と潮名を取得します。

月齢のおさらい

月齢は1から30までの数字で表され、1は新月、15が満月となる。

1と15の間の7と8は上弦の月、15と30の間の22と23は下弦の月となる。

潮名のおさらい

潮名には5種類あり、それぞれの意味は以下の通り。

  • 大潮:潮の干満の差が大きい、新月や満月の前後数日

  • 中潮:潮の干満の差が中程度

  • 小潮:潮の干満の差が小さい、上弦や下弦の月前後数日

  • 長潮:小潮の終わり

  • 若潮:小潮の直後、中潮の直前

潮の動き(干満の差)はおおよそ 大潮 > 中潮 > 若潮 ≧ 小潮 ≒ 長潮 となる。

月齢と潮名の対応

潮名に厳密な基準や定義はなさそうなものの、第五管区海上保安本部海洋情報部のWebサイトによると以下の通りとなるそうです。

  • 大潮:(月齢)1,2,14,15,16,17,29,30
  • 中潮:(月齢)3,4,5,6,12,13,18,19,20,21,27,28
  • 小潮:(月齢)7,8,9,22,23,24
  • 長潮:(月齢)10,25
  • 若潮:(月齢)11,26

日付から月齢を計算する

日付から月齢を計算するには以下の計算式を用います。

月齢 = (((年 - 11) % 19) * 11 + 定数 + 日) % 30

定数は月に応じて決まり、以下の通りです。

  • 1月3月:0
  • 2月4月5月:2
  • 6月:4
  • 7月:5
  • 8月:6
  • 9月:7
  • 10月:8
  • 11月:9
  • 12月:10

例えば、2018年6月6日であれば以下のように計算します。

月齢 = (((2018 - 11) % 19) * 11 + 4 + 6) % 30

計算結果は22となります。

しかし、この計算方法は簡易的な計算方法であり、僅かに誤差がでる可能性があります。調べると大変そうな計算式も見つけられるのですが、僕の用途ではこれで十分でした。

PHPを使った月齢の計算と潮名の判定

ここまで記載した通りでありますが、PHPでは以下のように記述しました。

$date = new DateTime();
$y = $date->format('Y');  //年

$m = $date->format('m');  //月

$d = $date->format('d');  //日

$c = 0;  //定数

switch($m){
    case 2:
    case 4:
    case 5:
        $c = 2;
        break;
    case 6:
        $c = 4;
        break;
    case 7:
        $c = 5;
        break;
    case 8:
        $c = 6;
        break;
    case 9:
        $c = 7;
        break;
    case 10:
        $c = 8;
        break;
    case 11:
        $c = 9;
        break;
    case 12:
        $c = 10;
        break;
}

//計算
$age = ((($y - 11) % 19) * 11 + $c + $d) % 30;

$tide = "大潮";
switch($moon + 1){
    case 3:
    case 4:
    case 5:
    case 6:
    case 12:
    case 13:
    case 18:
    case 19:
    case 20:
    case 21:
    case 27:
    case 28:
        $tide = "中潮";
        break;
    case 7:
    case 8:
    case 9:
    case 22:
    case 23:
    case 24:
        $tide = "小潮";
        break;
    case 10:
    case 25:
        $tide = "長潮";
        break;
    case 11:
    case 26:
        $tide = "若潮";
        break;
}

 

 さいごに

以上の計算を使ってこちらのサイトを作成しました。

シンプル潮位表

こんな風に埋め込めます。 

 

2018年7月14日の大阪の満潮・干潮時間と潮位
満潮
07時01分(170cm) 20時22分(177cm)

干潮
01時12分(100cm) 13時54分(-6cm)
今日は大潮で潮がよく動きます。年間の平均満干差に比べて70cm大きい潮の動きです。
月齢は1で新月を過ぎて段々と上弦の月へと向かっていきます。

 

こちらを参考にさせていただきました。

よくあるご質問 - 海の相談室(FAQ)

月齢 - Wikipedia

気象庁 | 潮汐・海面水位のデータ 潮位表

ありがとうございます。