2012-03-13 65 views
1

我想要一個php函數,它會以設定的時間間隔從一個初始整數500來減去一個值,例如50。以設定的時間間隔減去數值?

例如:每30天,扣除50從500所以後90天,如果只剩下350等

我可以做減法,這是我想不通的間隔程序。

如果不是PHP,JS也很棒。這是用來從一年的開始倒數到最後的值。

+0

這裏您的實際目標是什麼?您可能不需要每30天減去一次值,只需要計算它在您需要時應該具有的值,同時考慮自(開始日期)以來已過去多少天。 – deceze 2012-03-13 00:39:37

+0

你能解釋一下嗎?你想要一個函數,在運行時...每30(真實生活)天減去50個數。如果沒有,你可以進一步指定你的功能嗎?例如它需要一個整數(500),一個扣除(50)的值和間隔(30天 - 一個日期時間?整數)和一個天數(90 - 一個日期時間?整數),並且您希望它回報350? – 2012-03-13 00:39:45

+0

你不能用PHP做這件事,因爲它是一次性腳本。你需要類似Cron的任務。 – 2012-03-13 00:40:02

回答

1

你有一個起始號碼,你試圖找出你的當前值是什麼。它的基本總和 - (時間傳遞*遞減)問題。

所以舉個例子,你有你的原創時間。

$originalDate = '2011-01-01'; 
$now = '2011-03-01'; 

//it will count no. of days 
$dateDiff=(strtotime($now) - strtotime($originalDate))/ (60 * 60 * 24); 

$startingValue = 500; 
$descrement = 50; 

$currentValue = $startingValue - ($dateDiff/30*$descrement); 
+0

我測試了這兩個函數,並略微修改了這個函數。 '$ originalDate ='2012-01-01'; $ dateDiff =(strtotime(「now」) - strtotime($ originalDate))/(60 * 60 * 24); \t $ startingValue = 588; \t $ descrement = 49; \t $ currentValue = $ startingValue - ($ dateDiff/30 * $ descrement); \t \t \t echo $ currentValue; \t echo「
」; \t echo round($ currentValue,-1);' 現在,它給了我一個確切的價值,使用470,這在本月中旬是有意義的。理想情況下,這個數字是固定的,所以在3月份,這個數字是490(588-49-49)。 – stebesplace 2012-03-13 01:49:36

+0

該解決方案適合我的需求。我修改了它,但功能在那裏。 – stebesplace 2012-03-13 04:43:39

0

,如果你想在這一個功能:

/* deduct() 
* 
* @param $start  - the starting amount to subtract from 
* @param $amount  - the amount to subtract by 
* @param $interval  - the interval between deductions 
* @param $current_time - the current time to measure against the interval 
* 
* @return the amount after deduction $amount 
*   every $interval from $start until $current_time 
*/ 
function deduct($start, $amount, $interval, $current_time) { 
    return $start - ($amount * floor($current_time/$interval)); 
} 

您可以輕鬆地通過使用time(),或類似的東西,格式化成你的時間單位的時間值。

+0

立即檢查此... – stebesplace 2012-03-13 00:52:15

+0

設置此項有一些困難,從某種意義上說,儘管我可以輸入固定值,但我不確定計算是否適用於我。這可能是由於我正在使用的時間輸出,或者我應該將其保留爲默認格式。我其實沒有獲得回報價值。 – stebesplace 2012-03-13 01:06:53

+0

確保日期格式正確。使用'date('d',time())'格式化它幾天。 – Jon 2012-03-13 01:15:50