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

如何使用strtotime和date获得相对于今天的上一个月和一年?

董小林
2023-03-14
问题内容

我需要获取相对于当前日期的前一个月和年份。

但是,请参见以下示例。

// Today is 2011-03-30
echo date('Y-m-d', strtotime('last month'));

// Output:
2011-03-02

由于2月和3月的天数不同,这种行为在一定程度上是可以理解的,上面的示例中的代码是我所需要的,但是在每个月的1号到28号之间只能正确地工作100%。

那么,如何以date("Y-m")最优雅的方式获得上个月AND
year(想到的),并适用于一年中的每一天?最佳解决方案将基于strtotime参数解析。

更新。为了澄清需求。

我有一段代码可以获取最近几个月的统计信息,但是我首先显示上个月的统计信息,然后在需要时加载其他月份的统计信息。这是预期的目的。因此,在这个月中,我想找出要加载上一个月统计信息的年份。

我还有一个可以识别时区的代码(现在并不十分重要),并且接受strtotime-compatible字符串作为输入(以初始化内部日期),然后允许日期/时间也可以使用strtotime-compatible字符串进行调整。

我知道只需很少的条件和基本数学就可以完成此操作,但是与之相比,这确实很麻烦(例如,如果工作正常,那么):

echo tz::date('last month')->format('Y-d')

因此,我只需要以strtotime兼容的方式使用上个月和上一年。

答案(谢谢@dnagirl):

// Today is 2011-03-30
echo date('Y-m-d', strtotime('first day of last month')); // Output: 2011-02-01

问题答案:

DateTime课。它应该正确进行计算,并且日期格式与兼容strttotime。就像是:

$datestring='2011-03-30 first day of last month';
$dt=date_create($datestring);
echo $dt->format('Y-m'); //2011-02


 类似资料:
  • 我有一个课堂作业: 该类应该有计算两个日期之间天数的方法,返回一周中的哪一天,并给出给定日期的黄道带符号。 这是我写的代码: > 当我用YYY\MM\DD初始化<code>日期时,在检查周日以获取近期日期时,一切都很完美,但当我输入出生日期(1991\11\14)时,它返回到星期三,但我出生在星期四。 当我试图获取day和mont来检查黄道十二宫时,它完全崩溃了,当我输入11时返回0(对于mont

  • 问题内容: 我正在寻找获取上个月第一天和最后一天的最佳方法。我使用它们进行SQL查询以获取上个月的统计信息。 我认为这是最好的方法,更优化但又不那么全面,有人有另一种方法可以做到这一点吗? 谢谢!! 问题答案: 在PHP 5.3中,您可以使用类:

  • 问题内容: 我要用。 问题是,如果今天是星期一,它将返回什么?它似乎正在返回上周星期一的日期。在这种情况下,如何使它返回今天的日期? 问题答案: 在这种情况下,如何使它返回今天的日期? 伪代码: 顺便说一句,这个技巧也可以起作用:

  • 如何以moment.js中的以下格式获取当月的第一天和最后一天和时间: 2016-09-01 00:00

  • 问题内容: 我正在使用以下方法在11.04 下获取上一个,当前和下个月: 直到今天,即2012年10月的最后一天(2012-10-31) 到目前为止,我得到的结果如下: 我想输出应该是,,分别。 不明白为什么输出会像这样。什么是获得一致性的好方法,而改为月份? 问题答案: 问题是,从字面上接受您的请求,并尝试使用9月31日(10月31日减去一个月)的日期,然后由于该日期不存在,它将移至第二天。将(

  • 本文向大家介绍如何获得两个Java LocalDate之间的天,月和年?,包括了如何获得两个Java LocalDate之间的天,月和年?的使用技巧和注意事项,需要的朋友参考一下 设置两个Java日期: 现在,使用Period类方法获取两个日期之间的差: 现在,获取年,月和日: 示例 输出结果