【问题标题】:PHP - Fetch Previous Month from Current MonthPHP - 从当前月份获取上个月
【发布时间】:2015-08-01 15:29:42
【问题描述】:

我需要从过去的当月获取上个月。尝试了下面的代码,它确实适用于有 30 天的月份,但不适用于有 31 天的特定月份,即。 March, May, July, October and December

注意:问题可能听起来重复,但请完整阅读到最后。您可以通过更改系统并针对它测试以下代码来检查相同的问题。我需要上个月的输出格式为Jul

对于日期:30-Jul 输出是

Previous Month-Jun Current Month-Jul

对于日期:31-Jul 输出是

Previous Month-Jul Current Month-Jul

$prev_month = date('M', strtotime("last month")); echo 'Previous Month--'.$prev_month; echo 'Current Month--'.date('M');

也尝试了echo date('M', strtotime("-1 Months"));,但它的输出与上面相同。

如果当前月份是 (August)31 天,而上个月是 (July)31 天,那么它可以工作并显示正确的上个月,即 July,但如果当前月份有31 天和上个月有 30 或更短的天数。

我应该如何在当前月份的基础上获取正确的上个月?

【问题讨论】:

  • 对月份使用“m”而不是“M” - echo date('m', strtotime("-1 Months"));

标签: php date datetime


【解决方案1】:

你只需尝试一下

echo "Previous Month".date('M',strtotime('first day of last month'));

对于特定日期,您可以简单地使用

echo date('M',strtotime('first day of last month',strtotime('30-Jun')));//May

【讨论】:

  • @Slimshadddyyy 然后将“F”更改为“M”——否则,我喜欢这个。
  • @Wizzard Ohh .. 是的,这是错字。感谢指正
  • @Uchiha 为什么代码date('M', strtotime("last month")); 不起作用和 date('M', strtotime("上个月的第一天"));有效吗?
  • @Uchiha,我的代码也可以工作,但正如我所说,如果几个月有 31 天,比如Jul-Aug。您的代码也适用于这个用例。所以我只需要知道我在技术上做错了什么.. :)
  • 它的(UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi
【解决方案2】:

您应该输入从月初开始的日期。

$startDate = date('Y-m-1');
$prevMonth = date('M', strtotime("last month", strtotime($startDate)));

PHP date() and strtotime() return wrong months on 31st

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    相关资源
    最近更新 更多