为了账号安全,请及时绑定邮箱和手机立即绑定

根据当前日期计算日期范围

根据当前日期计算日期范围

PHP
牛魔王的故事 2022-07-16 11:15:53
我已经在这个网站上搜索了我需要的东西,但我找不到任何我想要的东西。从 mysql 中提取两个日期之间的数据有点困难。我知道系统如何编写代码来过滤两个日期之间的数据,但我遇到的问题是这两个日期在不同的月份。让我进一步解释一下;我有工作代码来拉两个日期之间的日期 - 目前我必须手动设置它们。我需要的是根据当前日期计算两个日期($from& $till)。$from应始终为一个月的 25 号 (00:00) 和下个月$till的 24 号 (23:59),而当前日期应始终介于两者之间。示例:2020 年 1 月 7 日$from应为 2019 年 12 月 25 日 00:00$till应为 2020 年 1 月 24 日 (23:59) 2020 年 1 月 25 日$from应为 2020 年 1 月 25 日 00:00$till应为 2020 年 2 月 24 日 (23: 59)目前我有以下代码,我手动设置日期:<?php     $from = strtotime('25/12/2019 00:00');    $till = strtotime('24/01/2020 23:59');    $stmt = $con -> prepare("SELECT SUM(`amount`) as `total`                             FROM `income`                             WHERE user_id = ?                             && time >= ? && time <= ?");     $stmt -> bind_param('iii', $user_id, $from, $till);     $stmt -> execute();     $stmt -> store_result();     $stmt -> bind_result($total_income);     $stmt -> fetch();?>那么有没有办法根据当前时间自动设置这些日期呢?
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

要自动设置日期(根据当前日期),您可以执行以下操作:


//default: from 25th of last month to 24th of current month

$from = strtotime('-1 month',strtotime(date('m/25/Y 00:00:00')));

$till = strtotime(date('m/24/Y 23:59:59'));


if (intval(date('d')) > 24) { //current day is bigger than 25 - shift it one month

    $from = strtotime('+1 month',$from);

    $till = strtotime('+1 month',$till);

}

这将使用上个月的 25 日作为默认开始日期,并将当月 24 日作为默认结束日期。


如果当前日期已经是该月的 25 日(或更晚),则它将两个日期都移动 1 个月。


另外:如果您在日期中使用斜杠,请记住格式是月/日/年,而不是日/月/年


查看完整回答
反对 回复 2022-07-16
  • 1 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信