You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询POS系统中用strtotime('+0/-0 days')获取今日销售数据的正确性

POS系统今日销售数据的日期处理优化建议

你的代码里用strtotime('+0 days')或strtotime('-0 days')确实能获取到今日日期,功能上可以正常运行,但这不是最简洁、语义最清晰的写法,有更符合PHP最佳实践的替代方案:

核心优化点

  • 要获取今日日期,完全没必要调用strtotime('+0 days'),直接用date("Y-m-d")即可,因为date()默认就基于当前时间生成日期。
  • 或者用strtotime('today'),语义更明确,一眼就能看出是要获取今日的起始时间。

其他时间条件的优化建议

原代码里的其他时间筛选也可以用更精准、语义更清晰的写法:

  • 昨日:用strtotime('yesterday')替代strtotime('-1 days')
  • 上周:用strtotime('-1 week')替代固定的-7 days(适配跨周场景)
  • 上月:用strtotime('-1 month')替代固定的-31 days(自动适配不同月份的天数差异,比如2月、30天的月份)

修正代码中的bug

注意原代码最后一个elseif分支少了判断条件,应该是elseif ($criteria == 'sales_past_month'),否则不管$criteria是什么值,都会走到这个分支,这会导致逻辑错误。

优化后的完整代码

case 'sales_today': 
case 'sales_past_day': 
case 'sales_past_week': 
case 'sales_past_month':

$start_date = false;
$end_date = false;

if ($criteria == 'sales_today')
{
    // 直接获取今日日期,无需多余的strtotime调用
    $start_date = date("Y-m-d");
    $end_date = date("Y-m-d 23:59:59");
}
elseif ($criteria == 'sales_past_day')
{
    $start_date = date("Y-m-d", strtotime('yesterday'));
    $end_date = date("Y-m-d 23:59:59");
}
elseif ($criteria == 'sales_past_week')
{
    $start_date = date("Y-m-d", strtotime('-1 week'));
    $end_date = date("Y-m-d 23:59:59");
}
elseif ($criteria == 'sales_past_month') // 修正此处的判断条件
{
    $start_date = date("Y-m-d", strtotime('-1 month'));
    $end_date = date("Y-m-d 23:59:59");
}

$this->load->model('Sale');
$item_ids = $this->Sale->get_item_ids_sold_for_date_range($start_date, $end_date, $supplier_id);

额外严谨性建议

如果你的数据库中销售时间是带时分秒的datetime类型,建议采用>= 今日00:00:00 AND < 明日00:00:00的查询逻辑,避免因订单时间刚好是00:00:00而被漏掉的边界问题:

if ($criteria == 'sales_today')
{
    $start_date = date("Y-m-d 00:00:00");
    // 获取明日零点的时间
    $end_date = date("Y-m-d 00:00:00", strtotime('+1 day'));
    // 数据库查询时使用:WHERE sale_time >= ? AND sale_time < ?
}

内容的提问来源于stack exchange,提问作者Fayz I

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 15:35:29