PHP OOP DateTime ModifyDate小数位数错误



如果我使用以下代码

$averageWeeks = 2.7;
$laidDate->modify('+'.$averageWeeks.' week');

我得到日期2014年5月31日返回,而如果我使用以下代码

$averageWeeks = 3;
$laidDate->modify('+'.$averageWeeks.' week');

我得到的日期是2014年5月3日,这是正确的。有什么方法可以在日期修改方法中使用小数点吗?

假设你从4月12日开始,那么5月3日将是3周,5月31日将是7周。所以我的猜测是,当你通过"2.7"时,它忽略了该字符串的"2."部分。

您可以考虑计算要单独添加的天数,例如:

$averageWeeks = 2.7;
$averageDays = floor($averageWeeks * 7);
$laidDate->modify('+'.$averageDays.' days');

还要考虑2.7周就是18.9天。通过服用floor,我们增加了18天。除非你也打算改变一天中的时间,否则在这里添加小数天数是不可行的。如果你这样做了,你就必须做一些额外的计算,因为modifyadd似乎都不支持分数值。你可以这样做:

$averageWeeks = 2.7;
$averageSeconds = floor($averageWeeks * 7 * 24 * 60 * 60);
$laidDate->modify('+'.$averageSeconds.' seconds');

但是,如果你认为这个时间是准确的,你可能是在自欺欺人,因为由于夏令时的转换,并不是每个当地的一天都有24小时。

相关内容

  • 没有找到相关文章

最新更新