从给定的日期时间中获取每月第一个星期一不保留时间组件

4

我在尝试什么

参考:获取给定日期时间集合的每个月第一个星期一

我正在尝试根据给定的日期时间获取每个月的第一个星期一。

例如:考虑日期时间2013-08-02 00:00; 2013-09-05 00:00。那么结果将分别为2013-08-05 00:00; 2013-09-02 00:00

我已经能够做到这一点,但它不保留时间组件。

我需要什么

在上面的示例中:如果两个日期时间包含一个时间值,例如2013-08-02 10:00; 2013-09-05 10:00。则输出应为2013-08-05 10:00; 2013-09-02 10:00。但是我的代码得到的是2013-08-05 00:00; 2013-09-02 00:00。我可能该怎么办来解决这个问题?

代码

 $test = new DateTime('2013-08-02 10:00');
 echo $test->modify('first monday')->format('Y-m-d H:i');

1
你的意思是想保留时间组件吗? - Mark Baker
1
是的,那就是我需要的。 - Avinash
2个回答

3

如果您想保留时间为10:00,请尝试以下操作:

$test = new DateTime('2013-08-02 10:00');
echo $test->modify('first monday ' . $test->format('H:i'))->format('Y-m-d H:i');

1
Try this:
echo strftime("%d/%m/%Y", strtotime("first Monday of Aug 2013"));

1
这将仅返回05/08/2013。如果使用Datetime类进行修复,效果会更好。 - Avinash
这个日期是2013年8月的星期一。 - Ranjan
请尝试我的代码,它也会给出相同的结果。但这不是关于星期一,而是时间组件的问题。 - Avinash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接