日付を週番号と年にグループ化しようとしていますが、その週番号をUNIXタイムスタンプに戻したいのですが。これを行うにはどうすればよいですか?
私はあなたがISO 8601の週番号を使用していると仮定し、ISO 8601の週の最初の日が欲しいので、例えばWeek 1 of 2011
戻り値 January 3 2011
。
strtotime
は{YYYY}W{WW}
フォーマット:
echo date("Y-m-d", strtotime("2011W01")); // 2011-01-03
週番号はtwo桁である必要があることに注意してください。
恥ずかしいことに、DateTime::createFromFormat
、新しいPHP日付を処理する5つの方法は、この種の情報を解析できないようです-「週」プレースホルダーがありません。
$week
_:週番号$year
_:年数次に:
_$timestamp = gmmktime (0, 0 , 0 , 1, , 4 + 7*($week - 1), $year);
_
4 + 7*($week - 1)
は ISO 8601に準拠 であり、年の最初の週は1月4日を含む週です。
strtotime('1/1/2011 + 4 weeks')
(1/1は常に第1週にあるわけではありません。これにより、第5週に移動します)。週のanyタイムスタンプが必要な場合はそれで十分です。それ以外の場合は、今週の月曜日に移動する必要があります。
$t = strtotime('1/1/2011 + 4 weeks');
$t -= 24 * 60 * 60 * date('w', $t);
更新:1/1/2011
の代わりに、2011年の最初の月曜日を使用します。2番目の計算はもう必要ありません。