在php中获取给定月份和年份的开始和结束unix时间戳

Posted

技术标签:

【中文标题】在php中获取给定月份和年份的开始和结束unix时间戳【英文标题】:Get the beginning and ending unix timestamp for a given month and year in php 【发布时间】:2011-04-07 17:40:42 【问题描述】:

我想查找一个月中第一天(例如 2010 年 9 月 1 日和 0:00)和一个月中最后一天(例如 9 月 31 日 23:59)的时间戳

【问题讨论】:

【参考方案1】:

如果您将这些日期作为字符串,您可以简单地使用strtotime(),如果您只有部分信息,您可以使用mktime()。

但是,9 月只有 30 天 ;)

例子:

$month = 9;
$year  = 2010;

$first = mktime(0,0,0,$month,1,$year);
echo date('r', $first);

$last = mktime(23,59,00,$month+1,0,$year);
echo date('r', $last);

【讨论】:

我没有这些字符串,通过查询字符串传递的 2 个参数是月份和年份。从那里我需要处理第一个和最后一个时间戳。 这就是我写它的方式,但是我克服了 fabrik 的问题 $days_in_month = cal_days_in_month(CAL_GREGORIAN,$month,$year); 使用我的解决方案,您不必担心当月的最后一天——您可以使用下个月的0 找到时间戳。顺便说一句,为什么投反对票? 这对我来说就像一个魅力,虽然我想得到最后一个月的最晚时间,所以我添加了 59 秒 - $last = mktime(23,59,59,$month+1,0,$year);【参考方案2】:

也许它可以做得更简单,但你明白了:

<?php

$start = mktime(0, 0, 1, $month, 1, $year);
$end   = mktime(23, 59, 00, $month, date('t', $month), $year);

?>

【讨论】:

【参考方案3】:

如果你使用的是 PHP 5.3(不要在 5.2 上尝试这个,日期解析器在那里工作不同)你可以说:

<?php

$date = "2010-05-10 00:00:00";

$x = new DateTime($date);

$x->modify("last day of this month");
$x->modify("last second");

echo $x->format("Y-m-d H:i:s");
// 2010-05-30 23:59:59
$timestamp = $x->getTimestamp();

【讨论】:

在 getTimestamp 中编辑,格式只是作为它工作的快速可粘贴证明。谢谢!

以上是关于在php中获取给定月份和年份的开始和结束unix时间戳的主要内容,如果未能解决你的问题,请参考以下文章

获取给定周年、给定月份和给定周的开始和结束日期

如何查找季度、年份、月份、学期开始和结束日期

从给定的开始日期获取结束日期基数

根据传入的年份和月份获取该月属于本年的第几周和每周的开始和结束日期

Java获取指定时间段的年份(开始结束时间)月份(开始结束时间)天数(开始结束时间)

使用 php 查找月份中的特定星期