繁体   English   中英

1个月在PHP中代表多少天?

[英]How many days does 1 month represent in PHP?

我看到php有月加法和减法有奇怪的问题。

我的问题是:

  • 1个月有相当于几天?
  • 如果是,这是所有编程语言的通用标准吗?

    几个例子:

     echo date('Ym-d',strtotime('2011-03-31 -1 months')); //2011-03-03 echo date('Ym-d',strtotime('2011-03-30 -1 months')); //2011-03-02 echo date('Ym-d',strtotime('2011-03-29 -1 months')); //2011-03-01 echo date('Ym-d',strtotime('2011-03-28 -1 months')); //2011-02-28 
  • 从您的示例中,它看起来是从月份部分中减去1,然后更正非法日期。 你的第二个例子:

    2011-03-30 - 1 month = 2011-02-30 这个日期不存在,因为2011年2月只有28天。 30 - 28 = 2 ,因此它将其作为下个月的第2天。

    但是,我还没有找到关于此的文档。

    无论哪种方式,假设我是对的,你的问题的答案是否定的 ,“1个月”没有(天数)等于天数,这取决于输入。

    strtotime解析日期信息的方式在这里非常有价值。

    似乎想要的是上个月的第一天,对吗?

    好吧,你可以许多这些相关命令链接在一起 例如,从PHP交互式shell:

    php > $d = date_create('2011-03-28 first day -1 month'); if($d) echo $d->format('Y-m-d H:i:s'); else echo "Failed.";
    2011-02-01 00:00:00
    php > $d = date_create('2011-03-29 first day -1 month'); if($d) echo $d->format('Y-m-d H:i:s'); else echo "Failed.";
    2011-02-01 00:00:00
    php > $d = date_create('2011-03-30 first day -1 month'); if($d) echo $d->format('Y-m-d H:i:s'); else echo "Failed.";
    2011-02-01 00:00:00
    php > $d = date_create('2011-03-31 first day -1 month'); if($d) echo $d->format('Y-m-d H:i:s'); else echo "Failed.";
    2011-02-01 00:00:00
    php > $d = date_create('2011-04-01 first day -1 month'); if($d) echo $d->format('Y-m-d H:i:s'); else echo "Failed.";
    2011-03-01 00:00:00
    

    first day要求当月的第一天。 要求-1 month到同一天的上个月。 因为我们已经回到了本月的第一天,所以这将始终按预期工作。

    暂无
    暂无

    声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

     
    粤ICP备18138465号  © 2020-2024 STACKOOM.COM