添加一天到一个date
我的代码添加一天到一个date返回date之前添加date: 2009-09-30 20:24:00
添加一天后的date应该滚动到下一个月: 1970-01-01 17:33:29
<?php //add day to date test for month roll over $stop_date = date('Ymd H:i:s', strtotime("2009-09-30 20:24:00")); echo 'date before day adding: '.$stop_date; $stop_date = date('Ymd H:i:s', strtotime('+1 day', $stop_date)); echo ' date after adding one day. SHOULD be rolled over to the next month: '.$stop_date; ?>
我之前使用过类似的代码,我在这里做错了什么?
<?php $stop_date = '2009-09-30 20:24:00'; echo 'date before day adding: ' . $stop_date; $stop_date = date('Ymd H:i:s', strtotime($stop_date . ' +1 day')); echo 'date after adding 1 day: ' . $stop_date; ?>
对于PHP 5.2.0+,你也可以这样做:
$stop_date = new DateTime('2009-09-30 20:24:00'); echo 'date before day adding: ' . $stop_date->format('Ymd H:i:s'); $stop_date->modify('+1 day'); echo 'date after adding 1 day: ' . $stop_date->format('Ymd H:i:s');
$date = new DateTime('2000-12-31'); $date->modify('+1 day'); echo $date->format('Ym-d') . "\n";
最简单的解决scheme
$date = new DateTime('+1 day'); echo $date->format('Ymd H:i:s');
尝试这个
echo date('Ymd H:i:s',date(strtotime("+1 day", strtotime("2009-09-30 20:24:00"))));
简单阅读和理解方式:
$original_date = "2009-09-29"; $time_original = strtotime($original_date); $time_add = $time_original + (3600*24); //add seconds of one day $new_date = date("Ymd", $time_add); echo $new_date;
我总是只添加86400(一天中的秒数):
$stop_date = date('Ymd H:i:s', strtotime("2009-09-30 20:24:00") + 86400); echo 'date after adding 1 day: '.$stop_date;
这可不是最简单的方法,但它可行!
虽然我同意Doug Hays的回答,但我会在这里指出你的代码不起作用的原因是因为strtotime()期望INT作为第二个参数,而不是string(即使是一个表示date的string)
如果你打开最大错误报告,你会看到这是一个“非正常形成的数值”错误,这是E_NOTICE级别。
以下代码使用DateTime类和它的方法modify()和format()来获得今年1月的第一天(但可以是另一个date),并添加365天到当天(但可以是N天) ):
echo (new DateTime((new DateTime())->modify('first day of January this year')->format('Ym-d')))->modify('+365 days')->format('Ym-d');
modify()
方法可用于将增量添加到现有的DateTime
值。
用当前的date和时间创build一个新的DateTime
对象:
$due_dt = new DateTime();
获得DateTime
对象后,可以通过添加或减去时间段来操作其值:
$due_dt->modify('+1 day');
您可以阅读更多的PHP手册 。
- 我怎样才能格式可空的DateTime与ToString()?
- 如何在moment.js中将date格式化为ISO 8601?
- 如何使用Python计算两个date之间的天数?
- 如何将一个Unix时间戳(自epoch以来的秒数)转换为Ruby DateTime?
- Java 8:Instant和LocalDateTime有什么区别?
- 如何将一个Python time.struct_time对象转换为一个date时间对象?
- 在PostgreSQL中使用EXCLUDE防止相邻/重叠条目
- 如何在MacOS上的Shell脚本中将DATE转换为UNIX TIMESTAMP
- 如何使用SimpleDateFormat将string转换为date?