![]() | 1 TimeLe 2015-02-03 16:21:33 +08:00 2月没有30号,所以自动计算到下一月了~ |
![]() | 2 lightening 2015-02-03 16:23:33 +08:00 我觉得这是 bug。同是 UNIX 环境,Ruby 里: Date.new(2015,1,30) + 1.month => Sat, 28 Feb 2015 |
![]() | 3 nilennoct 2015-02-03 16:29:08 +08:00 via iPad 都说了‘next month’还3月这不是bug是什么? |
![]() | 4 Sunyanzi 2015-02-03 16:29:45 +08:00 我不觉得这是个 bug ... php 设计如此 ... 如果你需要跳二月的话可以用 MySQL 来完成 DATE_ADD( '2015-01-30', INTERVAL 1 MONTH ) ... |
![]() | 5 zyc841584303 OP @lightening 我觉得也是 php 默认 next month +1 mOnth== +31 day |
![]() | 6 zyc841584303 OP @Sunyanzi 不觉得 按照语义来说 next month +1 month 就是指的是2月么 |
![]() | 7 Sunyanzi 2015-02-03 16:42:39 +08:00 如果你给出的不是一个月末的日期而是永远使用每月第一天的话 +1 month 就永远不会有问题 ... |
![]() | 8 lightening 2015-02-03 16:47:43 +08:00 |
9 invite 2015-02-03 19:24:30 +08:00 那如果 3月31日 来实验,应该是几月了? |
![]() | 10 lincanbin 2015-02-03 20:09:11 +08:00 <?php $d = new DateTime( '2015-01-30' ); $d->modify( 'first day of next month' ); echo $d->format( 'F' ), "\n"; ?> |
![]() | 11 zyc841584303 OP @Sunyanzi 每天都会运行的一个脚本,数据库分表来, xxxx_201501_201502 然后前几天出现问题的变成了xxxx_201501_201503。官网上面很早就有这个问题了,一直没管。 严谨点,推荐10楼的做法echo date('Ym', strtotime('first day of next month', strtotime('20150130')) ); |
![]() | 12 msg7086 2015-02-03 23:40:05 +08:00 一年的第2个月开始数起的第30天。 算月份还是用第一天来算吧,用第30天来算,有二义性。 |