PHP实现:判断给定时间戳是否属于前一天
判断时间戳是否属于前一天的PHP实现
原代码通过计算24小时间隔返回天数差,但需求改为:判断给定时间戳对应的日期是否为当前日期的前一天(即使间隔仅2或6小时也需返回true),返回布尔值。以下是实现方案:
实现代码
function isTimestampFromPreviousDay($timestamp) { try { // 将时间戳转为Asia/Kolkata时区的DateTime对象 $targetDateTime = DateTime::createFromFormat('U', $timestamp); $targetDateTime->setTimezone(new DateTimeZone('Asia/Kolkata')); // 获取当前Asia/Kolkata时区的日期,并生成前一天的DateTime对象 $currentDateTime = new DateTime('now', new DateTimeZone('Asia/Kolkata')); $previousDayDateTime = (clone $currentDateTime)->modify('-1 day'); // 仅对比日期部分(年-月-日),忽略具体时间 return $targetDateTime->format('Y-m-d') === $previousDayDateTime->format('Y-m-d'); } catch (Exception $e) { throw new Exception($e->getMessage()); } }
关键说明
- 时区统一:全程使用
Asia/Kolkata时区,避免跨时区导致的日期判断偏差 - 自然日判断:通过
modify('-1 day')直接获取当前日期的前一天,而非依赖小时数计算,确保符合自然日的判断逻辑 - 日期对比:使用
Y-m-d格式对比日期字符串,只关注日期是否匹配,忽略具体时分秒的差异
内容的提问来源于stack exchange,提问作者Sai Darshan
相关产品推荐
相关产品推荐

