Php-从天数计算周数/天数

3

我有一个距离未来某个日期的天数,但想知道这是多少周和多少天。如果不足一周,则只返回相同的天数。

这种转换是否可能?

例如,17天将是2周零3天。

例如,4天将是4天。


6
取模运算符不够用?为什么?$x % 7 可以计算出不足一周的天数,然后你可以轻松地推算出周数。参见:详细手册,链接:http://php.net/manual/zh/language.operators.arithmetic.php。 - Piskvor left the building
1
+1 对 @Piskvor 的建议表示赞同,但如果你需要超过几周的时间,可以考虑使用 PHP 的 DateInterval 类。 - Jimmy Sawczuk
Piskvor 是正确的。通过 round($x / 7) 获取周数,然后通过 $x % 7 获取天数。 - Nonym
@Nonym: "$weeks = round($x/7); $days = ($x%7)" 对于 "$x==13" 不会做出 完全 你所期望的结果。PHP有三种不同的取整函数,这是有充分理由的。 - Piskvor left the building
你是对的,piskvor,但也许 $weeks = floor($x/7); $days = ($x%7) 可以行得通,不是吗? - Nonym
@Nonym:正是如此,正如下面二十多个答案所证明的那样 ;) - Piskvor left the building
7个回答

9
我会尝试这样做:

我会尝试这么做:

$days = 17;
$weeks = floor($days / 7);
$dayRemainder = $days % 7;
echo $days.'<br/>'.$weeks.'<br/>'.$dayRemainder;//add whatever logic you need here to get the display the way you want it.

正确的解决方案。+1 - Alive to die - Anant

2
$weeks = intval($days / 7);
$days = $days % 7;

if($weeks)
{
    printf("%d weeks", $weeks);
}
if($days)
{
    if($weeks)
    {
        printf(" and ");
    }
    printf("%d days", $days);
}

1

类似这样的东西应该可以工作

function getnumweeks(d) {
   totalDays = d;
   numWeeks = floor(d/7);
   if numWeeks != 0 {
      extraDays = totalDays % 7;
      return array(extraDays, numWeeks);
   } else {
      return array(totalDays, 0)
   }
}

然后您可以这样调用和使用它:

ans = getnumweeks(17)

ans[0] <- Contains number of days
ans[1] <- Contains Number of Weeks

0
假设x是天数,W是输出的周数值,D是剩余天数的输出值。
首先进行整数除法
W = x / 7;
然后取余数:
D = x % 7;

由于PHP是弱类型语言,因此W不一定是整数。你需要在其周围加上floor()函数。 - Piskvor left the building
是的,你说得对!我只是写了一个非常笼统的方式,并没有精确的PHP代码 ;) - rkosegi

0
正如Piskvor所提到的,您应该使用模运算符:
$weeks = $days/7;
$daysleft = $days%7;

如果$x = 13;,那么$weeks == 1.8571428571429,$daysleft == 6。接近了,但还差一点。 - Piskvor left the building

0
$num_days = $databack30[days_to_next_event]; 
$weeks = floor($num_days/7); 
$days = $num_days % 7;

if($weeks>'0'){ $whenitis = ' in '.$weeks.' weeks and '.$days.' days'; }

else { $whenitis = ' in '.$days.' days'; }

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接