根据开始日期确定周数

时间:2010-04-30 06:07:21

标签: php

我需要帮助来创建一个函数来根据这两个参数确定周数:

  1. 开始日期
  2. 指定日期
  3. 例如,如果我将2010年4月7日指定为开始日期&通过2010年4月20日作为查询日期,我希望函数返回WEEK 2.另一个例子,如果我将2010年3月6日设置为开始日期并查看2010年4月5日那么它应该返回WEEK 6。

    感谢您的时间和帮助。

    =================

    更新

    例如:

    开始日期:3/6 - 周1 查询日期:4/5

    第2周从3月7日至13日开始。 第3周(3 / 14-3 / 20)。 第4周(3 / 21-3 / 27)。第5周(3 / 28-4 / 3)。 所以4/5属于第6周。

    一个想法是使用开始日期的星期日作为新*开始日期。因此,该函数不会查找3/6,而是使用2/28作为开始日期。

5 个答案:

答案 0 :(得分:1)

您可以找到两个日期之间的天数,将该数字除以7并获取结果的ceil

$start_date = strtotime("2010-04-07");
$specified_date = strtotime("2010-04-20");
$num_of_days = ($specified_date - $start_date)/(60*60*24);
$week_num = ceil($num_of_days/7);
echo $week_num; // prints 2.

答案 1 :(得分:1)

怎么样?

  1. 确定自开始日期的纪元以来的天数
  2. 同上,指定日期
  3. 减去
  4. 除以7

答案 2 :(得分:0)

由于我不知道你将如何收到你的日期,我会做类似的事情:

$starting = mktime(parsedStartingDate);
$lookup = mktime(parsedLookupDate);

$result = $lookup - $starting;
$result = (((($result / 60) / 60) / 24) / 7);

return $result;

答案 3 :(得分:0)

由于你不是很清楚,这可能是也可能不是你想要的:

// Example 1 (returns 2)
date('W', strtotime('April 20, 2010')) - date('W', strtotime('April 7, 2010'));

// Example 2 (returns 5)
date('W', strtotime('April 5, 2010')) - date('W', strtotime('March 6, 2010'));

答案 4 :(得分:0)

想出来。

$start_date = strtotime("2010-03-06"); // returns 1267862400

$start_date_week = strtotime("last sunday",$start_date); // 02-28

$specified_date = strtotime("2010-04-10"); // returns 1270882800

$specified_date_week = strtotime("next sunday",$specified_date); // 4-11 looking up the Next Sunday was also the key!

$num_of_days = ($specified_date_week - $start_date_week)/(60*60*24); // 41.958
$week_num = ceil($num_of_days/7); //6

echo $week_num;