回答
有一个相关的问题已经在这里,Calculate business days
你可以用它来减从7到周末的日子,或类似的。
我不认为有一个内置的为,但这应该做的工作:
$startTime = START_TIMESTAMP;
$endTime = END_TIMESTAMP;
$time = $startTime;
$count = 0;
while(date('w', $time) != 0) { // 0 (for Sunday) through 6 (for Saturday)
$time += 86400;
}
while($time < $endTime) {
$count++;
$time += 7 * 86400;
}
如果startdate中的时间戳记星期六到来,该怎么办星期六 – nik 2010-06-02 14:42:56
它也可以工作,'date('w',$ time)== 0',所以你去第二个时候,'$ count ++' ,你至少有一个星期六。 – 2010-06-02 14:58:36
而不是'while(date('w',$ time)!= 0)''你可以做'$ time = strtotime(“Saturday”)'或'$ time = strtotime(“Sunday”)''。 – 2010-06-02 15:16:47
<?php
date_default_timezone_set("Europe/Lisbon");
$d1 = new DateTime("2009-06-01"); /* inclusive */
$d2 = new DateTime("2009-07-01"); /* exclusive */
$interval = $d2->diff($d1);
$number_of_days = $interval->format("%d");
$number_of_weekends = $number_of_days/7;
$remainder = $number_of_days % 7;
if ($remainder >=2 && $d1->format("D") == "Sat")
$number_of_weekends++;
elseif ($d1->format("w") + $remainder >= 8)
$number_of_weekends++;
我可能错过了最后一个条件之一,一定要检查它与不同的开始日期。 (如果您发现错误,请随时编辑此答案)。
有绝对没有内置的函数,该函数,但你可以使用的strtotime循环天
$start = strtotime('2010-01-01');
$end = strtotime('2010-01-09');
function numWeekdays($start_ts, $end_ts, $day, $include_start_end = false) {
$day = strtolower($day);
$current_ts = $start_ts;
// loop next $day until timestamp past $end_ts
while($current_ts < $end_ts) {
if(($current_ts = strtotime('next '.$day, $current_ts)) < $end_ts) {
$days++;
}
}
// include start/end days
if ($include_start_end) {
if (strtolower(date('l', $start_ts)) == $day) {
$days++;
}
if (strtolower(date('l', $end_ts)) == $day) {
$days++;
}
}
return (int)$days;
}
echo numWeekDays($start, $end, 'saturday', false);
让我们KISS(保持简单愚蠢)。为什么这么复杂?
function countWeekendDays($start, $end)
{
// $start in timestamp
// $end in timestamp
$iter = 24*60*60; // whole day in seconds
$count = 0; // keep a count of Sats & Suns
for($i = $start; $i <= $end; $i=$i+$iter)
{
if(Date('D',$i) == 'Sat' || Date('D',$i) == 'Sun')
{
$count++;
}
}
return $count;
}
我搜索了一段时间了一个简单的解决方案,工作,决定写我自己以及与此
$start = date('Y-m-d');
$end = date('Y-m-d', strtotime($start.' +1 year'));
$current = $start;
$count = 0;
while($current != $end){
if(date('l', strtotime($current)) == 'Saturday'){
$count++;
}
$current = date('Y-m-d', strtotime($current.' +1 day'));
};
echo $count;
- 1. 按星期几计算订单,将星期六和星期日计数添加到星期五
- 2. 计算星期一到星期六的星期几
- 3. 计算假期:Oracle中给定日期范围查询中的星期六和星期日的数量
- 4. Bootstrap - datesDisabled数组日期和星期日和星期六
- 5. 忽略星期六和星期日
- 6. 如何明确星期日和星期六的日期数?
- 7. PHP星期一星期一和星期六日期问题
- 8. 使用星期六作为星期结束日期计算oracle中的星期结束日期
- 9. 星期六和星期日的行数总和
- 10. 如何使用星期六作为星期结束日期来计算星期结束日期?
- 11. 如何查看星期六/星期日?
- 12. SQL Server 2012-星期日期星期六到星期五
- 13. PHP数组与星期六星期六至星期五
- 14. 无星期六,星期日和节假日返回交货日期的函数
- 15. 如何计算mysql中两个日期之间的星期六和星期日的总数
- 16. 特定年份和月份的星期六和星期日的数量
- 17. 星期五和星期六的UILocalNotification
- 18. 计算星期六到星期的周末
- 19. 星期六和星期日禁用的日历
- 20. 减去两天计算工作日只(不星期六或星期日)
- 21. 不要在日历中显示星期六和星期日javascript
- 22. 根据用户输入的日期计算星期六
- 23. 计算指定日期的星期
- 24. 计算每个星期的日期
- 25. 检查一个变量是星期六还是星期日
- 26. 星期六开始星期的星期数
- 27. 如何获得月的星期日和星期六odoo
- 28. 计算日期星期一作为星期几= 1
- 29. 计算SQL Server中两天之间的所有“星期日,星期一...星期六”
- 30. 每周(星期日至星期六)的基础数据组
的[计算工作日]可能重复上来(http://stackoverflow.com/questions/336127/calculate-business-days) – 2014-01-14 10:45:30