PHP日期时间 - 从年,周和星期几制作

问题描述:

我将年,星期和星期几存储为整数。平日从星期一开始,以0为基础。这些变量相当于MySQL中的YEAR(date),WEEK(date)和WEEKDAY(date,1)函数。例如,对于今日(星期四2014年10月30日),这将是:PHP日期时间 - 从年,周和星期几制作

$year = 2014; 
$week = 44; 
$weekday = 3; // Thursday 

使用这些变量如何设置DateTime对象的日期?

我试着使用:

DateTime::createFromFormat("Y-z", $year . "-" . ((($week - 1) * 7) + $weekday)); 

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

任何想法?

+0

首先,你为什么不以日期时间列存储的日期? – Ruben 2014-10-30 11:10:17

+0

没有任何东西存储在MySQL中,我只是将MySQL函数作为我所做的变量(实际上是方法参数)的例子。请参阅下面的解决方案 – 2014-10-30 11:12:46

该解决方案:

$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); 

似乎给了预期的结果

希望它可以帮助别人

在我看来,如果你需要使用\DateTime::setISODate()。然而,你将需要1添加到平日周一是1

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

http://3v4l.org/EVqHj