如果我有一个,$date
YYYY-mm-dd
并且想要获得$day
一周中的特定时间(由0(星期日)至6(星期六)指定)YYYY-mm-dd
。
例如,如果我有2012-10-11
as$date
和5
as $day
,我想得到2012-10-12
,如果我有0
as $day
,2012-10-14
编辑:
你们大多数人都误解了它。我有一些日期,$date
并且想要获得由同一周的0-6指定的日期$date
。
所以不,我不要$date
...的日子
如果我有一个,$date
YYYY-mm-dd
并且想要获得$day
一周中的特定时间(由0(星期日)至6(星期六)指定)YYYY-mm-dd
。
例如,如果我有2012-10-11
as$date
和5
as $day
,我想得到2012-10-12
,如果我有0
as $day
,2012-10-14
编辑:
你们大多数人都误解了它。我有一些日期,$date
并且想要获得由同一周的0-6指定的日期$date
。
所以不,我不要$date
...的日子
Answers:
尝试
$date = '2012-10-11';
$day = 1;
$days = array('Sunday', 'Monday', 'Tuesday', 'Wednesday','Thursday','Friday', 'Saturday');
echo date('Y-m-d', strtotime($days[$day], strtotime($date)));
2012-10-14
在您输入时返回正确的日期0
,@Rezigned返回2012-10-07
如果您的日期已经是DateTime
或DateTimeImmutable
可以使用该format
方法。
$day_of_week = intval($date_time->format('w'));
格式字符串与日期函数使用的格式字符串相同。
要回答预期的问题:
$date_time->modify($target_day_of_week - $day_of_week . ' days');
只是:
2012-10-11作为$ date和5作为$ day
<?php
$day=5;
$w = date("w", strtotime("2011-01-11")) + 1; // you must add 1 to for Sunday
echo $w;
$sunday = date("Y-m-d", strtotime("2011-01-11")-strtotime("+$w day"));
$result = date("Y-m-d", strtotime($sunday)+strtotime("+$day day"));
echo $result;
?>
$ result ='2012-10-12'是您想要的。
恐怕您必须手动进行。获取日期的当前星期几,计算偏移量并将偏移量添加到日期。
$current = date("w", $date)
$offset = $day - $current
$new_date = new DateTime($date)
->add(
new DateInterval($offset."D")
)->format('Y-m-d')