我怎么能在PHP中计算日期

时间:2012-02-21 05:51:36

标签: php

实际上这有点棘手。我正在设置食物输送系统。当买家从这个网页上购买食物时,他会收到一封邮件,说明食物何时送达(估计交货时间)。如果他在凌晨00:00到10:00之间购买,他会在下午12:30吃饭。如果他在14:00到23:59之间购买,他会在第二天下午12:30吃饭。毋庸置疑,食品服务在10点01分至13点59分之间暂停服务。我已经编写了邮件系统,我唯一没有的是用于计算何时送达食物的代码。有人可以帮忙吗?感谢

2 个答案:

答案 0 :(得分: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);
  }
}

当我运行它时,输出如下所示:

ghoti@pc$ ./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
ghoti@pc$ 

那是你在找什么?

答案 1 :(得分: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';
}