PHP 日期相关处理,例如:获取本月第一天及最后一天等

本文详细介绍了使用PHP进行时间与日期的操作方法,包括获取今日、本周、本月的时间范围,计算特定日期前后的时间,以及如何获取当前的年、月、日等信息。通过具体代码示例,展示了如何利用PHP内置的strtotime和date函数实现日期的加减和格式化。

//时间相关
    public function timeinfo(){

        //获取今天0点-24点时间戳
        $today = strtotime(date('Y-m-d', time()));
        $todayend = $today + 24 * 60 * 60;


        //获取本周第一天及最后一天
        $weekfirst=strtotime(date('Y-m-d', strtotime('this week')));
        $weeklast=strtotime(date('Y-m-d', strtotime('last day next week')));

        //3.获取当天年份、月份、日及天数.
        echo " 本月共有:".date("t")."天";
        echo " 当前年份".date('Y');
        echo " 当前月份".date('m');
        echo " 当前几号".date('d');

        //1.获取上个月第一天及最后一天.
        echo date('Y-m-01', strtotime('-1 month'));
        echo "<br/>";
        echo date('Y-m-t', strtotime('-1 month'));

        //2016-08-10这天 2个月后的日期
        echo date("Y-m-d",strtotime("+2 month",strtotime("2016-08-10")));

        //获取3 年、月、日 后的日期
        echo date("Y-m-d",strtotime("+3 year",time()));
        echo date("Y-m-d",strtotime("+3 month",time()));
        echo date("Y-m-d",strtotime("+3 day",time()));


    }

    //获取当月第一天和最后一天
    function getthemonth($date)
    {
        $firstday = date('Y-m-01', strtotime(date('Y-m-d')));
        $lastday = date('Y-m-d', strtotime("$firstday +1 month -1 day"));
        return array($firstday,$lastday);
    }

### 使用 PHP 和 SQL 计算本月最后一天是周几 #### PHP 实现方法 为了获得当前月份最后一天对应的星期数,在PHP中可以利用 `date` 函数以及 `strtotime` 来实现。通过设置时间为该月最后一秒再加一秒即进入下一个月的第一天,随后回退到前一天来得到这个月的最后一日,并最终求得其为哪一日。 ```php $lastDayOfMonth = strtotime("last day of this month"); $dayOfWeek = date('l', $lastDayOfMonth); echo "本月最后一天是:" . $dayOfWeek; ``` 上述代码片段展示了如何使用 PHP 的内置函数找出给定月份结束之日的具体名称[^1]。 对于更精确的结果返回数值形式表示的星期几(0代表星期天),可修改输出部分如下: ```php $numericDayOfWeek = date('N', $lastDayOfMonth); // ISO-8601 星期编号 (1=Monday, ..., 7=Sunday) // 如果希望按照 Sunday as the start of week,则调整如下: $sundayStartWeekNumber = ($numericDayOfWeek == 7 ? 0 : $numericDayOfWeek); echo "本月最后一天对应的是第 {$sundayStartWeekNumber} 周"; ``` 这段脚本会给出一个整型值指出具体某个月份终结于那一周中的何者。 #### MySQL 查询语句 而在MySQL数据库环境中执行相同操作则可以通过查询命令完成: ```sql SELECT DAYOFWEEK(LAST_DAY(CURDATE())) AS last_day_of_week_number, DATE_FORMAT(LAST_DAY(CURDATE()), '%W') AS last_day_name; ``` 这里采用了 `LAST_DAY()` 函数找到指定日期所在月份的最大日子;接着运用 `DAYOFWEEK()` 得知这一天落在星期内的位置——其中周一至周五分别映射成数字2~6而周六和周日分别是1与7;另外还借助了 `DATE_FORMAT()` 提供更加直观的文字描述[^4]. #### Oracle 数据库处理方式 针对Oracle环境下的解决方案同样简洁明了: ```sql SELECT TO_CHAR(LAST_DAY(SYSDATE), 'D') AS numeric_day_of_week, TO_CHAR(LAST_DAY(SYSDATE), 'Day') AS weekday_name FROM dual; ``` 此SQL语句组合了 `TO_CHAR()` 转换格式化输出、`LAST_DAY()` 定位每月最后一个有效工作日的功能,从而实现了目标需求[^5].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值