从数字中查找数周和数天的月数

时间:2011-11-30 11:03:33

标签: php

说我有数字234 编辑(以天为单位)。我怎样才能找到几个月,几周和几天? 是否有功能或我必须自己计算?我的主要问题是月份,因为他们没有固定的天数(30,31,28)。

其实我正在编写一个应用程序,其中每天收费的时间是以天为单位输入的。但在视图中,我不想显示“每234天收费”,而是“每x个月y天收费”

提前致谢

2 个答案:

答案 0 :(得分:6)

编辑:增加周数

<?PHP
$date1 = new DateTime();
$date2 = new DateTime();
$date2->modify('+241 day');

$interval = $date1->diff($date2);

$years = $interval->format('%y');
$months = $interval->format('%m');
$days = $interval->format('%d');

$weeks = (int) ($days / 7);
$days = $days % 7;

echo "$years years $months months $weeks weeks $days days";
?>

编辑:不使用DateTime

参考:How to calculate the difference between two dates using PHP?

$date1 = time();
$date2 = strtotime("+237 day");

$diff = abs($date2 - $date1);

$years = floor($diff / (365*60*60*24));
$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

$weeks = (int) ($days / 7);
$days = $days % 7;

printf("%d years, %d months,%d weeks, %d days\n", $years, $months, $weeks, $days);

答案 1 :(得分:1)

找周数很容易,只需将天数除以7.

查找月数要困难得多,因为结果将取决于开始日期。一个月中的天数每月都不同,而二月的情况则逐年不同。在不知道开始日期的情况下,您可以做的是用平均月长度(30.4375)除以近似值。如果您想知道实际的月数,可以从已知的开始日期计算结束日期,并获得它们之间的月数差异。

PHP DateTime类应该提供执行此操作所需的功能。

http://uk.php.net/manual/en/class.datetime.php