グレゴリオ暦またはB%#; FAME%:! この日付で!

くそー、この日付ですべてがどのように複雑なのですか、なぜ私たちは毎年365日あるのですか? 毎年、正確に8760時間がないのはなぜですか? なぜ毎年31536000秒を正確に持っていないのですか??

これらの数字でどのように疲れていますか。
たぶん誰かが解決策を知っていますか?

タスクは次のとおりです。通常の通常の日付があります:2006年7月28日。 (2006年7月28日)。 「X年XX月XX日」という形式で印刷する必要があります。その月と年の現在の日付が計算されます。 それは(たとえば日付):

最初の日付:2006年7月28日
現在の日付:2007年7月28日
結果:1年

最初の日付:2006年7月28日
現在の日付:2008年1月28日
結果:1年6か月

最初の日付:2006年7月28日
現在の日付:2008年7月28日
結果:2年

最初の日付:07.28.2006
現在の日付:2008年8月30日
結果:2年1か月2日


2月の愚かさ(これらのうるう年に耐えられなかった場合)により、すべてが順調です、すべては順調です。明るい頭。

日付カウントコード自体:
function pf($n, $form1, $form2, $form5) {
$n = abs($n) % 100;
$n1 = $n % 10;
if ($n > 10 && $n < 20) return $form5;
if ($n1 > 1 && $n1 < 5) return $form2;
if ($n1 == 1) return $form1;
return $form5;
}

$mktime = mktime(0,0,0,7,28,2006);
$nowTime = mktime(0,0,0,7,28,2007); //time();

// CheckGregorian

$y = date("Y",$nowTime);
$minus = 0;

if(!checkdate(2,29,$y)) $minus = 86400;

$mSec = $nowTime - $mktime - $minus;
$yDay = 365 * 86400;

$year = ($mSec - ($mSec % $yDay)) / $yDay; //31557600
$mSec = $mSec - ($year * $yDay);
$month = ($mSec - ($mSec % 2629800)) / 2629800;
$mSec = $mSec - ($month * 2629800);
$day = ($mSec - ($mSec % 86400)) / 86400;

if($year != 0) echo " $year ".pf($year,"","","");
if($month != 0) echo " $month ".pf($month,"","","");
if($day != 0) echo " $day ".pf($day,"","","");

Plzは私をマイナスしないでください。 誰もが見たいトピックは欲しくない これはトピックではなく、ヘルプデスクです。 あなたが本当にそのような問題に遭遇し、解決策を知っている人、助けてください。

更新:誰かがそれを必要とするなら、答えはru_phpで私に促しました。 作業スクリプト。 もちろん、これは私が望んでいたものではありません、つまり 私は自分自身を改良し、解析し、誰かの既製のスクリプトを使用したくなかった。 しかし、それでも動作します。
リンク: ru_php /コメント

Source: https://habr.com/ru/post/J17572/


All Articles