使用DateTime()获取每月的第N天

时间:2018-09-30 21:00:32

标签: php datetime strtotime

我需要获取当月10日的日期。这种方式不起作用:

<?php 
$date_start = new DateTime();
$date_start->modify('tenth day of this month');
echo $date_start->format('Y-m-d H:i:s'), "\n";
?>

结果:

  

警告:DateTime :: modify():无法解析时间字符串(第十天)   位置10(o)所在的月):在以下位置找不到时区   [...] [...]第3行上的数据库

当然,我可以使用date('Y-m-10'),但需要使用DateTime()对象

3 个答案:

答案 0 :(得分:0)

您可以使用setDate

$date_start->setDate($date_start->format('Y'), $date_start->format('m'), 10);
echo $date_start->format('Y-m-d H:i:s'), "\n";

输出:

2018-10-10 06:49:01

答案 1 :(得分:0)

我找到了正确的方法:

<?php
$date_start = new DateTime();
$date_start->modify('first day of this month');
$date_start->modify('+9 days');
echo $date_start->format('Y-m-d');
?>

2018年9月30日的结果:

2018-09-10

答案 2 :(得分:0)

我不认为有tenth day of this monthfirst day of this month

如果您想用DateTime来做,请尝试双重修改,如下所示:

  $date_start = new DateTime();
  $date_start->modify('first day of this month');
  $date_start->modify('+9 day');
  echo $date_start->format('Y-m-d H:i:s'), "\n";