PHP DateTime - 从YEAR,WEEK和WEEKDAY开始制作

时间:2014-10-30 11:04:06

标签: php date datetime

我将年,周和工作日存储为整数。工作日从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));

以及其他一些变化,但没有给我预期的结果。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

在我看来,好像你需要使用\DateTime::setISODate()。但是,由于星期一是1,您需要在工作日添加1。

$date = (new \DateTime())->setISODate($year, $week, $weekday + 1);
var_dump($date);

http://3v4l.org/EVqHj

答案 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);

似乎给出了预期的结果

希望它有助于某人