我将年,周和工作日存储为整数。工作日从0开始,从星期一开始。变量等同于MySQL中的YEAR(日期),WEEK(日期)和WEEKDAY(日期,1)函数。例如今天(2014年10月30日星期四),它将是:
$year = 2014;
$week = 44;
$weekday = 3; // Thursday
使用这些变量如何设置DateTime对象的日期?
我尝试使用:
DateTime::createFromFormat("Y-z", $year . "-" . ((($week - 1) * 7) + $weekday));
以及其他一些变化,但没有给我预期的结果。
有什么想法吗?
答案 0 :(得分:3)
在我看来,好像你需要使用\DateTime::setISODate()
。但是,由于星期一是1,您需要在工作日添加1。
$date = (new \DateTime())->setISODate($year, $week, $weekday + 1);
var_dump($date);
答案 1 :(得分:2)
此解决方案:
$year = 2014;
$week = 44;
$weekday = 3; // Thursday
$day_in_question = new DateTime();
$day_in_question->setTime(0, 0, 0);
$day_in_question->setISODate($year, $week_number, $weekday + 1);
似乎给出了预期的结果
希望它有助于某人