PHP如何从Unix时间戳中提取一个月的前几天
有这个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
$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上的性能测量工具看起来并不可靠,因为即使对于同一个脚本,它也可能会显示非常不同的结果,请尝试添加空间以重新运行脚本。我只是假设简单的数字运算比解析一个字符串快好几次“下周日”、“最后一天”。因此,使用的字符串解析越少,解析速度就越快。当然,只有在几十亿次迭代中,这才是真正值得注意的。所以有一点是关键词:问候。对不起,但我觉得这很有趣。你不相信这些数字是正确的,因为你认为只使用数字的操作更容易。如果你不相信这些数字,那么就在本地进行一次真正的测试。如果你觉得重要的话。