2012-02-21 41 views
0

其實這有點棘手。我正在設置一個送餐系統。當買家從該網頁購買食品時,他會收到一封郵件,說明食品何時交付(預計交貨時間)。如果他在00:00 AM到10:00 AM之間購買,他會在下午12:30進餐。如果他在14:00至23:59之間購買購買物品,則在次日12:30時他會吃飯。不用說,食品服務在10:01至13:59之間關閉。我已經編寫了郵件系統,我唯一沒有的是計算他的食物何時交付的代碼。任何人都可以幫忙嗎?謝謝我如何在php中計算日期

+1

到目前爲止,你有什麼,它是如何工作的? – 2012-02-21 05:52:57

+1

提示:'if(time() deceze 2012-02-21 05:54:34

+0

我已經完成了郵件程序腳本,它可以發送我想要的所有郵件。我想在這封郵件上寫下的一件事是預計送貨時間,我不知道如何開始 – chenci 2012-02-21 05:55:39

回答

1

我做了這個shell可執行文件。它假定訂單時間($orders)是「現在」。

#!/usr/local/bin/php 
<?php 

$orders=array(
    "2012-02-21 09:21:00", 
    "2012-02-21 10:45:00", 
    "2012-02-21 14:10:00" 
); 

function ordertime($when) { 
    $datearray=getdate(strtotime($when)); 
    if ($datearray['hours'] < 10) { 
    // order ships today 
    return strtotime("today 12:30"); 
    } else 
    if ($datearray['hours'] < 14) { 
    // we can't take this order 
    return(FALSE); 
    } else { 
    // order ships tomorrow 
    return strtotime("tomorrow 12:30"); 
    } 
} 

date_default_timezone_set("America/Toronto"); 

foreach ($orders as $oneorder) { 
    $delivery=ordertime($oneorder); 
    if ($delivery) { 
    printf("%s: %s - %s\n", $oneorder, $delivery, strftime("%Y-%m-%d %T", $delivery)); 
    } else { 
    printf("%s: INVALID ORDER TIME\n", $oneorder); 
    } 
} 

當我運行它,輸出結果如下:

[email protected]$ ./test.php 
2012-02-21 09:21:00: 1329845400 - 2012-02-21 12:30:00 
2012-02-21 10:45:00: INVALID ORDER TIME 
2012-02-21 14:10:00: 1329931800 - 2012-02-22 12:30:00 
[email protected]$ 

是不是你想要的?

+0

是的,無論我在找什麼。 date_default_timezone_set是爲php5,我有什麼替代php4? – chenci 2012-02-21 17:23:11

+0

不知道有一個「替代」的PHP4 ...我沒有一個PHP4框再玩,所以我建議你測試它。我懷疑你的時間將被解釋爲格林尼治標準時間或者當地服務器。無論哪種方式,只要添加或刪除將您與GMT隔開的秒數,您都可以根據需要進行調整。 – ghoti 2012-02-22 02:52:37

+0

嗨,今天我終於有時間嘗試在Windows中的代碼(我的測試機器)在PHP中,似乎我不能輸出strftime,我不知道爲什麼這個輸出。 '2012-02-21 09:21:00:1330018200 - 2012-02-21 10:45:00:無效訂單時間2012-02-21 14:10:00:1330104600 -' – chenci 2012-02-24 03:06:09

0

你可以這樣做。

$time = date('H'); 
if($time <= 10){ 
    $delivery_time = time('d-m-Y').'12:30pm'; 
}else if($time >= 14){ 
    $delivery_time = date("d-m-Y",strtotime("+1 days")).'12:30pm'; 
}