我需要能够将DateTime对象设置为当前月份的某一天。很明显,我可以通过获取当前月份并创建新的DateTime,或者检查当前日期并创建DateInterval对象来修改DateTime来实现这一点,但我只想为DateTime::modify提供纯文本参数。
我在找这样的东西:
$datetime->modify('10th day this month');
但这给了我一个类似的错误
PHP警告:DateTime::modify():无法解析位置0(1)处的时间字符串(本月第10天):第1行上PHP shell代码中的意外字符
而且我似乎找不到正确的句子结构来让PHP发挥得很好。
不可能直接获得给定月份的第X天,但您可以通过一个简单的解决方法来实现这一点:
$datetime->modify('last day of previous month')->modify('+10 day');
另一种选择是:
$datetime->format('Y-m-10');
如果必须使用DateTime::modify(),则此解决方法可能适合您:-
$date = new 'DateTime();
$date->modify($date->format('Y-m-10'));
虽然这可能不会比Amal的答案更好,但我在这里提供它只是为了避免双重呼叫。
演示
我发现使用setDate()
和format()
提取当前年份和月份可以节省几微秒,以满足setDate的3个参数(但有点冗长)
$date = new 'DateTime();
$date->setDate($date->format('Y'), $date->format('m'), 10);