当前位置: 首页 > 面试题库 >

如何列出两个日期之间的所有月份

邵俊才
2023-03-14
问题内容

我正在尝试列出两个日期之间的所有月份。

例如; 开始日期是:2010-12-02,最后日期是:2012-05-06

我想列出这样的东西:

2010-12
2011-01
2011-02
2011-03
2011-04
.
.
.
2012-04
2012-05

这是我尝试过的,但根本没有用:

    $year_min = 2010;
    $year_max = 2012;
    $month_min = 12;
    $month_max = 5;
    for($y=$year_min; $y<=$year_max; $y++)
    {
        for($m=$month_min; $m<=$month_max; $m++)
        {
            $period[] = $y.$m;
        }
    }

问题答案:

PHP 5.3

$start    = new DateTime('2010-12-02');
$start->modify('first day of this month');
$end      = new DateTime('2012-05-06');
$end->modify('first day of next month');
$interval = DateInterval::createFromDateString('1 month');
$period   = new DatePeriod($start, $interval, $end);

foreach ($period as $dt) {
    echo $dt->format("Y-m") . "<br>\n";
}

PHP 5.4或更高版本

$start    = (new DateTime('2010-12-02'))->modify('first day of this month');
$end      = (new DateTime('2012-05-06'))->modify('first day of next month');
$interval = DateInterval::createFromDateString('1 month');
$period   = new DatePeriod($start, $interval, $end);

foreach ($period as $dt) {
    echo $dt->format("Y-m") . "<br>\n";
}

我们将开始日期和结束日期修改为每月第一天的部分很重要。如果我们不这样做,则当前日期要比2月的最后一天高(例如,非-年为28,leap年为29),则跳过2月。



 类似资料:
  • 我一直在尝试在Excel中制作一个公式,用于填充两个日期之间的月份。 我得到的只是DatedIF(),但它不满足要求。 这是我想要从Excel公式中获得的图片。如果我更新开始日期或结束日期公式中的任何日期,将自动计算日期之间的所有月份,并在附加的图片中给出可用的结果。 代码结果和我想要的结果。代码应该相应地与日期一起工作。 https://docs . Google . com/spreadshe

  • 问题内容: 它给出以下内容: 但是我想获得下个月的定义,该怎么办? 问题答案: 表达方式 给。我们期望这两个值都指向每月的最后几天。如果将1天添加到值中,我们将获得下个月的第一天, 会给我们1个月的预期时间。因此,让我们检查是否有一个月的最后两天,在这种情况下,我们要返回第二天的年龄间隔。在其他情况下,我们将返回原始值的年龄间隔: 一些例子:

  • 问题内容: 我正在寻找创建一条选择语句,该语句将每小时在@minDateTime和@maxDateTime之间返回,如下所示(没有可供选择的表。我不在寻找where子句!): 问题答案: 试试这个。使用。 在上面的查询中,a的基本记录由之前的第一个sql查询派生。查询结果为您提供。 重复执行第二个查询以获取结果。此过程 将继续进行,直到Dates少于。

  • 问题内容: 我必须获取mysql中两个日期之间的月份列表。 问题答案: SQLFiddle演示

  • 问题内容: 在新API中是否有可能获取 两个日期之间的所有日期? 假设我有这部分代码: 现在我需要介于和之间的所有日期。 我正在考虑获取两个日期中的一个并进行迭代: 有没有更好的方法来获取日期? 问题答案: 假设您主要想在日期范围内进行迭代,那么创建一个可迭代的类将很有意义。那可以让你写: 就像是: 添加equals和hashcode方法,getter可能很有意义,也许有一个静态工厂+私有构造函数

  • 我试图在我正在创建的C#应用程序中显示两个日期之间的年、月和日。(使用控制台进行测试) 我正在使用NodaTime来实现这一点,但在接下来的几个月里,我遇到了一些问题。 我已经阅读了这里的大部分问题和答案,但没有找到任何我可以从中受益的东西。 大多数时候函数工作但有时它不添加月如果天 我使用这个代码进行测试 (2017, 10, 16)和(2018, 1, 15)应该显示为3个月,但它们显示为2个