Php 将一个月的某一天与一周的某一天和某一年联系起来的问题
我正在尝试使用以下代码获取一个月中的某一天:Php 将一个月的某一天与一周的某一天和某一年联系起来的问题,php,date,datetime,Php,Date,Datetime,我正在尝试使用以下代码获取一个月中的某一天: // your input $month = "September"; $year = "2013"; $dayWeek = "Friday"; $week = 2; // create a date object $date = new DateTime(); // set to the first day of the specified year/month $date->modify($yea
// your input
$month = "September";
$year = "2013";
$dayWeek = "Friday";
$week = 2;
// create a date object
$date = new DateTime();
// set to the first day of the specified year/month
$date->modify($year . '-' . $month . '-01');
// add $week -1 weeks to the date
$date->modify('+' . ($week - 1) . ' week');
// set to day of week
$date->modify($dayWeek);
// here's the day of month for you
echo $date->format('j');
但是这个代码不起作用,为什么不呢
因为如果我有这些数据:
$month = "December";
$year = "2019";
$dayWeek = "saturday";
$week = 2;
它应该返回07,因为如果我们查看2019年12月的日历。。。第一周只是星期天,但它返回14,我想知道为什么??如果12月14日是第三周
我想知道或得到一个代码,它给了我一个月的一天。。。只给$month、$year、dayWeek和week of the month。看
指定日期时,请引用:
移动到此名称的第二天
所以,
$date->modify($year . '-' . $month . '-01');
给你2019年12月1日,也就是周日
$date->modify('+' . ($week - 1) . ' week');
添加1周,即现在的日期12月8日,星期日
及
寻找下一个星期六,即12月14日,这正是本月的第二个星期六
这可能会解决你的问题
<?php
// your input
$month = "December";
$year = "2019";
$dayWeek = "saturday";
$week = 2;
// create a date object
$date = new DateTime();
$date->modify($year . '-' . $month . '-01');
$date->modify('sunday'); // Put here 'saturday' if your week ends with saturday and starts with sunday
$end_of_the_first_week = $date->format('j');
// Start over again
$date->modify($year . '-' . $month . '-01');
$date->modify($dayWeek);
if ($date->format('j') > $end_of_the_first_week) { // we already in the second week
if ($week > 2) {
// add $week -2 weeks to the date
$date->modify('+' . ($week - 2) . ' week');
}
} else if ($week > 1) {
// add $week -1 weeks to the date
$date->modify('+' . ($week - 1) . ' week');
}
echo $date->format('j'); // 7
为什么你认为从周日到周六是-1
,而不是+6
?@JesúsCova应该是这样。试着测试一下。
<?php
// your input
$month = "December";
$year = "2019";
$dayWeek = "saturday";
$week = 2;
// create a date object
$date = new DateTime();
$date->modify($year . '-' . $month . '-01');
$date->modify('sunday'); // Put here 'saturday' if your week ends with saturday and starts with sunday
$end_of_the_first_week = $date->format('j');
// Start over again
$date->modify($year . '-' . $month . '-01');
$date->modify($dayWeek);
if ($date->format('j') > $end_of_the_first_week) { // we already in the second week
if ($week > 2) {
// add $week -2 weeks to the date
$date->modify('+' . ($week - 2) . ' week');
}
} else if ($week > 1) {
// add $week -1 weeks to the date
$date->modify('+' . ($week - 1) . ' week');
}
echo $date->format('j'); // 7