PHP Datetime:根据月份、一年中的一周和一周中的一天获取日期

PHP Datetime:根据月份、一年中的一周和一周中的一天获取日期,php,datetime,Php,Datetime,我有三个参数,我想根据这三个参数得到确切的日期。我有以下参数: Month : integer (01-12) | Week of month : integer (01-05) | Day of week : (Sunday-Saturday) 我有三个以上的参数,我想获取日期 例如: 假设我将01作为月01作为周,将星期几作为星期五,那么它应该返回2014年1月3日 假设:任何输入仅用于未来日期。使用strotime。需要在2013年1月1日(星期五)写出星期几和月份,因此我将月号转换为名

我有三个参数,我想根据这三个参数得到确切的日期。我有以下参数:

Month : integer (01-12) |
Week of month : integer (01-05) |
Day of week : (Sunday-Saturday)
我有三个以上的参数,我想获取日期

例如:

假设我将01作为月01作为周,将星期几作为星期五,那么它应该返回2014年1月3日


假设:任何输入仅用于未来日期。

使用strotime。需要在2013年1月1日(星期五)写出星期几和月份,因此我将月号转换为名称。我假设一周中的某一天已经是星期五了

function calcDate($day,$week,$month)
{
  $thisYear = date("Y");

  $monthName = date("F", mktime(0, 0, 0, $month, 10)); //http://gilbert.pellegrom.me/php-month-number-to-month-name-the-easy-way/
  $query = $week." ".$day." ".$monthName;
  $outDate = strtotime($query." ".$thisYear));

  if (outDate < time())
  {
    $outDate = strtotime($query." ".($thisYear+1));
  }
  return date('d-m-Y', $outDate);
}

我相信这可以扩展到:

$month = 'January';
$week = 0;
$day = 'friday';
$year = date("Y") + 1;

$d = new DateTime();
$d->modify("first {$day} of {$month} {$year} +{$week} week");
echo $d->format('d/m/Y');

你能解释一下第一个月01、第一周01和星期五是如何等于2014年01月03日的吗?这一点非常令人困惑。在此基础上,你将如何从这些参数中获取年份?我对你的结果感到非常困惑,直到我想起标准的美国日期符号与世界其他地区不同。你应该向美国回答者澄清,你的日期符号是DD-MM-YYYY,而不是MM-DD-YYYY。这个问题没有显示任何研究成果。做家庭作业很重要。告诉我们你发现了什么,为什么它不能满足你的需要。这表明你花了时间来帮助自己,这使我们不必重复显而易见的答案,而且最重要的是,这有助于你得到更具体、更相关的答案@全读心术模式:大概OP只展望未来1年。关于格式-如果你仔细看一下,这是不相关的:明年1月第一周最近的周五是3号-除了缺乏研究工作,这实际上是一个比一开始看起来更棘手的问题。+1这一点在我脑海中闪过——我不知道是谁对PHP日期/字符串解析算法做出了贡献,但他们在我眼中是传奇,因为它实际上很神奇@使者,我刚刚读了手册页,是的,真的很棒: