Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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如何从Unix时间戳中提取一个月的前几天_Php_Unix - Fatal编程技术网

PHP如何从Unix时间戳中提取一个月的前几天

PHP如何从Unix时间戳中提取一个月的前几天,php,unix,Php,Unix,有这个Unix时间戳,它需要生成一周的第一天作为数组 $time = '1456034400'; // This present Month February 2016 // in calendar the February has the start of the week // Sunday 7 // Sunday 14 // Sunday 21 // Sunday 28 如何从Unix时间戳获取这样的数组: $weekd

有这个Unix时间戳,它需要生成一周的第一天作为数组

    $time = '1456034400'; 
    // This present Month February 2016
    // in calendar the February has the start of the week 
    // Sunday 7
    // Sunday 14
    // Sunday 21
    // Sunday 28
如何从Unix时间戳获取这样的数组:

    $weekdays = array(
                  0 => 7,
                  1 => 14,
                  2 => 21,
                  3 => 28
                 );
这种方法需要在几年内的任何一个月都有效且准确,而不仅仅是2016年2月

function getSundays($y, $m)
{
    return new DatePeriod(
        new DateTime("first Sunday of $y-$m"),
        DateInterval::createFromDateString('next sunday'),
        new DateTime("last day of $y-$m")
    );
}


$days="";
foreach (getSundays(2016, 04) as $Sunday) {
    $days[] = $Sunday->format("d");
}

var_dump($days);

因为它使用简单的计算来迭代数周,所以速度要快一点:

$time = 1456034400;

$firstDay = strtotime('first Sunday of '.date('M',$time).' '.date('Y',$time));
$lastDay =  mktime(0,0,0,date('m',$time)+1,1,date('Y', $time));

$weekdays = array();

for ($i = $firstDay; $i < $lastDay; $i += 7*24*3600){
    $weekdays[] = date('d',$i);
}

因为它使用简单的计算来迭代数周,所以速度要快一点:

$time = 1456034400;

$firstDay = strtotime('first Sunday of '.date('M',$time).' '.date('Y',$time));
$lastDay =  mktime(0,0,0,date('m',$time)+1,1,date('Y', $time));

$weekdays = array();

for ($i = $firstDay; $i < $lastDay; $i += 7*24*3600){
    $weekdays[] = date('d',$i);
}

对不起,我把代码弄错了。“现在检查一下,”arraySorry补充道,“代码出错了。”。“现在检查一下,”他补充道,“它实际上同样快。”。在我的代码中,我使用了april,我不知道为什么,我又测试了一个月,结果成功了,我忘了改回二月。但2月份的时间也是你的0.017@Andreas 3v4l上的性能测量工具看起来并不可靠,因为即使对于同一个脚本,它也可能会显示非常不同的结果,请尝试添加空间以重新运行脚本。我只是假设简单的数字运算比解析一个字符串快好几次“下周日”、“最后一天”。因此,使用的字符串解析越少,解析速度就越快。当然,只有在几十亿次迭代中,这才是真正值得注意的。所以有一点是关键词:问候。对不起,但我觉得这很有趣。你不相信这些数字是正确的,因为你认为只使用数字的操作更容易。如果你不相信这些数字,那么就在本地进行一次真正的测试。如果你觉得它很重要,它实际上也同样快。在我的代码中,我使用了april,我不知道为什么,我又测试了一个月,结果成功了,我忘了改回二月。但2月份的时间也是你的0.017@Andreas 3v4l上的性能测量工具看起来并不可靠,因为即使对于同一个脚本,它也可能会显示非常不同的结果,请尝试添加空间以重新运行脚本。我只是假设简单的数字运算比解析一个字符串快好几次“下周日”、“最后一天”。因此,使用的字符串解析越少,解析速度就越快。当然,只有在几十亿次迭代中,这才是真正值得注意的。所以有一点是关键词:问候。对不起,但我觉得这很有趣。你不相信这些数字是正确的,因为你认为只使用数字的操作更容易。如果你不相信这些数字,那么就在本地进行一次真正的测试。如果你觉得重要的话。