php strtotime 1year,php strtotime相对时间-1month的使用问题

历史代码的一个问题

➜ ~ date

Tue Mar 31 17:37:20 CST 2020

➜ ~ php -r "echo date('Y-m', strtotime('-1 month'));"

2020-03

➜ ~ php -r "echo date('Y-m', strtotime('+1 month'));"

2020-05

当前日期是2020年03月31日,直观感觉减一个月应该是输出2020-02,加一个月应该是输出2020-04。

➜ ~ cal 2 2020

February 2020

Su Mo Tu We Th Fr Sa

1

2 3 4 5 6 7 8

9 10 11 12 13 14 15

16 17 18 19 20 21 22

23 24 25 26 27 28 29

➜ ~ cal 3 2020

March 2020

Su Mo Tu We Th Fr Sa

1 2 3 4 5 6 7

8 9 10 11 12 13 14

15 16 17 18 19 20 21

22 23 24 25 26 27 28

29 30 31

➜ ~ cal 4 2020

April 2020

Su Mo Tu We Th Fr Sa

1 2 3 4

5 6 7 8 9 10 11

12 13 14 15 16 17 18

19 20 21 22 23 24 25

26 27 28 29 30

其实是程序跟人理解不同造成的:

2020年03月31日,减一个月等于 2020年02月31日,系统没有2020年02月31日,往前加就等于2020年03月02日

2020年03月31日,加一个月等于 2020年04月31日,系统没有2020年04月31日,往前加就等于2020年05月01日

#php5.3之前可以采用:

➜ ~ php -r "echo date('Y-m-d', strtotime(date('Ym01').' -1 month'));"

2020-02-01

#php5.3之后可以采用:

➜ ~ php -r "echo date('Y-m-d', strtotime('first day of -1 month'));"

2020-02-01 ➜ ~ php -r "echo date('Y-m-d', strtotime('last day of -1 month'));"

2020-02-29

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值