gpt4 book ai didi

php:从日期范围中排除日期

转载 作者:行者123 更新时间:2023-11-27 22:33:08 25 4
gpt4 key购买 nike

我想知道如何从我设置的日期范围中排除某些日期。日期范围工作正常,如下所示:

<?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() of 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") . " ";
}
}

最佳答案

无法使用 DatePeriod 类排除一个范围内的多个日期。但是您可以将 in_array()DateTime 对象一起使用。这可能导致这样的代码:

$newBegin = new DateTime('6/30/2010');
$newEnd = new DateTime('7/12/2010');
$newEnd = $newEnd->modify( '+1 day' );

$exclude = array(
new DateTime('7/2/2010'),
new DateTime('7/4/2010'),
new DateTime('8/4/2010')
);

$newDaterange = new DatePeriod($newBegin, new DateInterval('P1D'), $newEnd);

foreach($newDaterange as $newDate){
if(!in_array($newDate, $exclude)) {
echo $newDate->format("jnY") . " ";
}
}

输出:

3062010 172010 372010 572010 672010 772010 872010 972010 1072010 1172010 1272010

更新:

在评论中,您询问了如何将传入的日期字符串列表转换为可在 $exclude 数组中使用的 DateTime 对象。

例子:

$exclude = array();

// stores dates like so: 7/2/2010 7/3/2010
foreach(get_field('test_select') as $datestring) {
$exclude []= new DateTime::createFromFormat('n/j/Y', $datestring);
}

就是这样。 :)

关于php:从日期范围中排除日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16132356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com