【问题标题】:Given start date get all the months name until current month?给定开始日期获取当前月份之前的所有月份名称?
【发布时间】:2020-03-02 07:53:00
【问题描述】:

给定开始日期如何获取当前月份之前的所有月份?

例如。如果给定日期是 2019 年 1 月 1 日

输出应该是:

Jan 2019

Feb 2019

Mar 2019

Apr 2019

May 2019

Jun 2019

Jul 2019

Aug 2019

Sep 2019

Oct 2019

Nov 2019

Dec 2019

Jan 2020

Feb 2020

Mar 2020

用稍微不同的方法解决了这个问题。谢谢大家的提示和回答。

<?php 

$startTime = strtotime("1 January 2019");
$startYear = date("Y", $startTime);
$currentYear = date("Y");
$yearDiff = $currentYear - $startYear;

$currentMonth = date("m", time());

for($i=0; $i < intval($currentMonth) + ($yearDiff * 12) ; $i++) 
{
$t = strtotime("+". $i . " months", $startTime);
$monthName = date("M", $t) ." ". date('Y', $t);
echo $monthName . "<br/>\n";
} 
?>

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 提示:使用DateTime 类和DateInterval 非常容易
  • 这能回答你的问题吗? increment date by one month
  • 尚无答案,但感谢我正在处理的提示。
  • 您告诉我们您的期望,但您的代码没有尝试解决它。 StackOverflow 不是免费的代码编写服务,因此您需要先尝试该任务,然后才能遇到需要帮助的问题。它可能只是一个简单的使用案例。更多信息stackoverflow.com/help/how-to-ask

标签: php


【解决方案1】:

给你,希望这个工作

$start    = new DateTime('2019-01-01');

$end      = new DateTime('2020-03-02');

$interval = DateInterval::createFromDateString('1 month');
$period   = new DatePeriod($start, $interval, $end);

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

【讨论】:

  • 我更喜欢使用ISO 8601 duration specification 创建DateInterval 例如:$interval = new DateInterval('P1M')。此外,如果日期提供为1st Jan 2019,您可以使用DateTime::createFromFormat('d* M Y', '1st Jan 2019');
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-18
  • 1970-01-01
相关资源
最近更新 更多