1

$newTimeによって作成された秒単位の時間である変数があり、mktime()それを日数に変換したいと思います。

この場合は終了し(1日の秒数)、日数(四捨五入)で86.400割ってみます。86.400

しかし時々私は得る:

Case 1: 87951 / 86400 = 1.0179513888 (1 day ago)
Case 2: 156257 / 86400 = 1.8085300925 (2 days ago)

そして時折:

Case 1: 87986 / 86400 = 1 (Should be 1 day ago)
Case 2: 156292 / 86400 = 1 (Should be 2 days ago)

これはコードです:

$newTime = round(bcdiv($newTime, bcmul("24", bcmul("60", "60"))),0);

bcmathを使用せず、通常のmath($newTime / (60*60*24))だけを使用すると、毎回浮動結果が得られます。

4

2 に答える 2

3

を使用してスケールを設定しましたbcscaleか?に設定されている場合は0、動作を説明できます。bcscale(100)計算する前に電話してみてください。

于 2012-07-28T13:59:30.413 に答える
1

あなたが使用することができます:

$newTime = round( $newTime / (60 * 60 * 24));

bcmathは一切ありません。

例:

$newTime = 156292;
$newTime = round( $newTime / (60 * 60 * 24));
echo $newTime; //2 Always

$newTime = 87986;
$newTime = round( $newTime / (60 * 60 * 24));
echo $newTime; //1 Always
于 2012-07-28T13:56:34.387 に答える