场景引入:
小张正在开发一个会员生日优惠系统,需要自动筛选本月生日的用户,他盯着屏幕挠头:"怎么用PHP精准获取当前月份的所有日期?" 别急!今天我们就用5分钟掌握这些超实用的时间函数技巧~
$currentMonth = date('m'); // 07(数字带前导零) $currentMonthName = date('F'); // July(英文全称) $currentMonthShort = date('M'); // Jul(英文缩写)
setlocale(LC_TIME, 'zh_CN'); echo strftime('%B'); // 输出"七月"(需服务器支持中文环境)
小贴士:
date('n')
和 date('m')
的区别:前者是"7"无前导零,后者是"07" date_default_timezone_set('Asia/Shanghai')
避免时区问题 ⏰ // 本月第一天 $firstDay = date('Y-m-01'); // 2025-07-01 // 本月最后一天(自动识别28/30/31天) $lastDay = date('Y-m-t'); // 2025-07-31
$daysInMonth = date('t'); $allDates = []; for ($day = 1; $day <= $daysInMonth; $day++) { $allDates[] = date("Y-m-") . str_pad($day, 2, '0', STR_PAD_LEFT); }
$isLeapYear = date('L'); // 1表示闰年 $febDays = $isLeapYear ? 29 : 28;
$lastMonthSameDay = date('Y-m-d', strtotime('-1 month')); // 注意:6月30日的上个月可能是5月30日(非4月30日)
$date1 = new DateTime('2025-01-15'); $date2 = new DateTime('2025-07-20'); $interval = $date1->diff($date2); echo $interval->m; // 输出6(相差6个月)
strtotime的陷阱
// 2025-01-31 减一个月会变成2024-12-31 echo date('Y-m-d', strtotime('2025-01-31 -1 month'));
月份循环的优雅写法
$date = new DateTime('first day of this month'); while ($date->format('m') == date('m')) { echo $date->format('Y-m-d') . "\n"; $date->add(new DateInterval('P1D')); }
:
掌握这些方法后,小张轻松实现了:
✅ 自动生成本月日期日历
✅ 精准计算会员生日周期
✅ 处理跨月数据统计
记住核心函数:
date()
→ 格式化输出
strtotime()
→ 文本转时间戳
DateTime
类 → 面向对象操作
现在就去试试吧!遇到问题欢迎在评论区交流~ ✨
本文由 庾黎昕 于2025-07-29发表在【云服务器提供商】,文中图片由(庾黎昕)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/479599.html
发表评论