0

私は次のような週と年のセットを持っています

$wk_det1 = array(36,2013);//ISO week assuming 52 weeks in a year, Year the said week belongs to
$wk_det2 = array(51,2012);

$wk_det1 と $wk_det2 の週数の違いを見つける必要があります。これは簡単かもしれませんが、私はそれを完全に理解することはできません。これを行う方法はありますか?

PS:念のため、これはphp4用です

4

5 に答える 5

3

1 年は 52 週なので、2013 年は 2013*52 週、2011 年は 2011*52 週です。2 つの違い (同じ週にあると仮定) は 52*(2013-2011) 週です。

差は簡単に で表すことができます52*($wk_det2[1]-$wek_det1[1])+$wk_det2[0]-$wk_det1[0];

ロジックは次のように機能します。

define("WEEKS_PER_YEAR", 52);

$week1_yr = $wk_det1[1];
$week2_yr = $wk_det2[1];
$yr_diff = $week2_yr - $week1_yr;

$week1_wk = $wk_det1[0];
$week2_wk = $wk_det2[0];
$wk_diff = $week2_wk - $week1_wk;

$total_wk_diff = WEEKS_PER_YEAR*$yr_diff+$wk_diff;
于 2013-09-05T20:49:12.087 に答える
1

PHPで日付を扱うときはいつでも、それは常にstrtotimeです。

この場合、次の表記を使用して週と年を変換できます。

strtotime("2013W36");

次に、結果のタイムスタンプを使用して単純な整数演算を実行できます。

于 2013-09-05T20:52:31.290 に答える
0
<?php
$end = strtotime("2013W36");
$start = strtotime("2011W51");
$delta = $end - $start;
$one_week = 60 * 60 * 24 * 7;
$modulus = $delta % $one_week;
$delta = $delta - $modulus;
$week_delta = $delta / $one_week;
echo "There are $week_delta weeks between $end and $start with modulus $modulus";
?>

出力: モジュラス 601200 で 1378094400 と 1324270800 の間に 88 週間あります

于 2013-09-05T21:10:05.010 に答える