说我有数字234 编辑(以天为单位)。我怎样才能找到几个月,几周和几天? 是否有功能或我必须自己计算?我的主要问题是月份,因为他们没有固定的天数(30,31,28)。
其实我正在编写一个应用程序,其中每天收费的时间是以天为单位输入的。但在视图中,我不想显示“每234天收费”,而是“每x个月y天收费”
提前致谢
答案 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类应该提供执行此操作所需的功能。