Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取给定日期时间集的每月第一个星期一 我需要什么_Php_Datetime - Fatal编程技术网

Php 获取给定日期时间集的每月第一个星期一 我需要什么

Php 获取给定日期时间集的每月第一个星期一 我需要什么,php,datetime,Php,Datetime,我有一个特定的约会时间列表。我想得到每个约会时间的第一个星期一 假设给定的日期时间是 2013-07-05 2013-08-05, 2013-09-13 etc. 我想得到所有这些datetimes中的第一个星期一,以便输出结果 2013-07-01, 2013-08-05, 2013-09-02 respectively 实际上,我一直在用stftime处理这个问题 第一个星期一将在一个月的前7天内, DAYOFWEEKdate返回1=星期日,2=星期一,依此类推 另请参见第23页 第

我有一个特定的约会时间列表。我想得到每个约会时间的第一个星期一

假设给定的日期时间是

 2013-07-05 2013-08-05, 2013-09-13 etc.
我想得到所有这些datetimes中的第一个星期一,以便输出结果

 2013-07-01, 2013-08-05, 2013-09-02 respectively
实际上,我一直在用stftime处理这个问题


第一个星期一将在一个月的前7天内, DAYOFWEEKdate返回1=星期日,2=星期一,依此类推

另请参见第23页
第一个星期一将在一个月的前7天内, DAYOFWEEKdate返回1=星期日,2=星期一,依此类推

另请参见第23页

您可以在日期数组中循环,然后在第一次遇到星期一时打破循环并返回$Date

输出


列表中的第一个星期一是-2013-08-05

您可以在日期数组中循环,然后在第一次遇到星期一时打破循环并返回$Date

输出


列表中的第一个星期一是-2013-08-05,使用php Datetime类:

$Dates = array('2013-07-02', '2013-08-05', '2013-09-13');
foreach ($Dates as $Date)
{
    $test = new DateTime($Date);
    echo $test->modify('first monday')->format('Y-m-d');
}

使用php Datetime类:

$Dates = array('2013-07-02', '2013-08-05', '2013-09-13');
foreach ($Dates as $Date)
{
    $test = new DateTime($Date);
    echo $test->modify('first monday')->format('Y-m-d');
}

请让我澄清为什么这个问题被选为主题之外的问题,这样我就可以确保我不会再犯同样的错误了。阿加尼没有投你的反对票,但是谁投了你的反对票,因为问代码的问题必须表明对正在解决的问题的最低理解。包括尝试过的解决方案、它们不起作用的原因以及预期结果。另请参见:因为他也将其标记为关闭。请注意粗体部分。诸如此类的问题很多。请向右看“相关”下方。在提问之前,您还应该使用页面右上角的搜索。当你创建一个问题时,你也会遇到类似的问题。你是说一个月的第一天?2013-09-13=>2013-09-02好的,我明白了。试试我的代码,希望这就是你想要的。请告诉我为什么这个问题被选为离题题题,这样我就可以确保我不会再犯同样的错误了。阿加尼没有投你反对票,但谁曾经投过反对票,问代码的问题必须证明对正在解决的问题的最低理解。包括尝试过的解决方案、它们不起作用的原因以及预期结果。另请参见:因为他也将其标记为关闭。请注意粗体部分。诸如此类的问题很多。请向右看“相关”下方。在提问之前,您还应该使用页面右上角的搜索。当你创建一个问题时,你也会遇到类似的问题。你是说一个月的第一天?2013-09-13=>2013-09-02好的,我明白了。试试我的代码,希望这就是你想要的。这实际上不是这个问题的正确答案$测试->修改“第一个星期一”;将DateTime对象更新到下周一。在某些情况下,你会在下个月的星期一结束。修改DateTime对象的正确方法是这样做:$test->modify'first monday';这其实不是这个问题的正确答案$测试->修改“第一个星期一”;将DateTime对象更新到下周一。在某些情况下,你会在下个月的星期一结束。修改DateTime对象的正确方法是这样做:$test->modify'first monday';
$Dates = array('2013-07-02', '2013-08-05', '2013-09-13');

foreach ($Dates as $Date)
{
    $weekday = date('l', strtotime($Date));
    if($weekday == 'Monday') { 
        echo "First Monday in list is - " . $Date;
        break; 
    }
}
$Dates = array('2013-07-02', '2013-08-05', '2013-09-13');
foreach ($Dates as $Date)
{
    $test = new DateTime($Date);
    echo $test->modify('first monday')->format('Y-m-d');
}