設定した日付範囲から特定の日付を除外する方法を見つけようとしています。日付範囲は次のように正常に機能します。
<?php $newBegin = new DateTime('6/30/2010');
$newEnd = new DateTime('7/12/2010');
$newEnd = $newEnd->modify( '+1 day' );
$newDaterange = new DatePeriod($newBegin, new DateInterval('P1D'), $newEnd);
foreach($newDaterange as $newDate){
echo $newDate->format("jnY") . " ";
} ?>
結果は次のように出力されます。
3062010 172010 272010 372010 472010 572010 672010 772010 872010 972010 1072010 1172010 1272010
ただし、クライアントは各日付範囲から特定の日付を除外する必要があるため、次のように日付を入力し7/2/2010 7/4/2010 8/4/2010
て、日付範囲から除外することをお勧めします。これはまったく可能ですか?週末などを除外するつもりはありません。日付のセットを入力して、日付範囲から除外するだけです。どんな提案でも大歓迎です!
アップデート:
@hek2mgl がこれを求めたのでvar_dump()
、get_field('test_select'));
var_dump(get_field('test_select'));
結果:
array(2) { [0]=> string(8) "7/2/2010" [1]=> string(8) "
完全なコード (動作していません):
$newBegin = DateTime::createFromFormat('n/j/Y', '6/30/2010');
$newEnd = DateTime::createFromFormat('n/j/Y', '7/12/2010');
$newEnd = $newEnd->modify( '+1 day' );
$exclude = array();
// stores dates like so: 7/2/2010 7/3/2010
foreach(get_field('test_select') as $datestring) {
$exclude []= new DateTime($datestring);
}
$newDaterange = new DatePeriod($newBegin, new DateInterval('P1D'), $newEnd);
foreach($newDaterange as $newDate){
if(!in_array($newDate, $exclude)) {
echo $newDate->format("jnY") . " ";
}
}