gpt4 book ai didi

PHP ceil 返回一个 float

转载 作者:行者123 更新时间:2023-12-04 06:08:05 27 4
gpt4 key购买 nike

我创建了一个函数来返回两个日期之间的差异

<?php


class days {
function dateDiff($start, $end) {
$start_ts = strtotime($start);

$end_ts = strtotime($end);

$diff = $end_ts - $start_ts;

$diff1 = ceil($diff / 86400);

return $diff1;

}
}

我在 View 中有这个代码:
<?php
$a = new days();
$days = $a->dateDiff($v[17], date('Y/m/d'));
if ($days < 30) {
$ds = $days;
$tm = 'days';
} else {
if ($days < 365) {
$ds = $days / 30;
$tm = 'months';
} else {
$ds = $days / 365;
$tm = 'years';
}
}

$v[17] 是从数据库返回到 View 的日期。

例如,当我输入 2011 年 8 月的一篇文章时......它会显示:

2.9666666666667 个月前

我问自己......这个 Ceil 方法如何不能像它应该做的那样返回一个 int 值?

如果这是正常的,那么解决方案是什么?

先感谢您 :)

最佳答案

ceil函数在返回天数时工作得很好。

但问题就在这里:

if ($days<365){
$ds=$days/30;
$tm='months';
}

您没有使用 ceil这次!你应该尝试类似 $ds = ceil($days / 30); .

年数也是一样。

使用 round 可能会更精确而不是 ceil ,以便 32 天不会在 2 个月内翻译:
$days = $a->dateDiff('10 oct 2011',date('Y/m/d'));

if ($days < 30) {
$ds = $days;
$tm = 'day';
}
else {
if ($days < 365){
$ds = round($days / 30);
$tm = 'month';
}
else {
$ds = round($days / 365);
$tm = 'year';
}
}

if ($ds > 1) {
$tm .= 's';
}

echo "$ds $tm"; # => 1 month; or 2 months using ceil function

关于PHP ceil 返回一个 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8112119/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com