如何使用 DateTime 函数定位当前月份的特定日期?

问题描述 投票:0回答:3

我需要能够将 DateTime 对象设置为当月的某一天。显然,我可以通过获取当前月份并创建一个新的 DateTime,或者检查当前日期并创建一个 DateInterval 对象来修改 DateTime,但我只想为 DateTime::modify 提供纯文本参数。

我正在寻找类似的东西:

$datetime->modify('10th day this month');

但这给了我一个错误,比如

PHP 警告:DateTime::modify():无法解析位置 0 (1) 处的时间字符串(本月 10 日):第 1 行 php shell 代码中出现意外字符

而且我似乎无法找到正确的句子结构来让 PHP 很好地发挥作用。

php datetime
3个回答
13
投票

不可能直接获取给定月份的第 X 天,但您可以通过简单的解决方法来实现:

$datetime->modify('last day of previous month')->modify('+10 day');

另一种选择是:

$datetime->format('Y-m-10');

3
投票

如果您必须使用 DateTime::modify() 那么此解决方法可能适合您:-

$date = new \DateTime();
$date->modify($date->format('Y-m-10'));

虽然它可能并不比 Amal 的答案更好,但我在这里提供它只是作为避免双重调用的替代方案。

演示


2
投票

我发现使用

setDate()
format()
提取当前年份和月份以满足 setDate 的 3 个参数(但有点冗长)可以节省几微秒

$date = new \DateTime();
$date->setDate($date->format('Y'), $date->format('m'), 10);
© www.soinside.com 2019 - 2024. All rights reserved.