Başlangıç ​​tarihinin dayalı hafta sayısını belirlemek

5 Cevap

Ben bu 2 parametrelere dayalı hafta sayısını belirlemek için bir işlevi oluşturmak için yardıma ihtiyacım var:

  1. Başlangıç ​​tarihi
  2. Belirtilen tarih

Örneğin, ben başlangıç ​​tarihi ve gibi 7 Nisan 2010 belirtirseniz arama için tarih olarak 20 Nisan 2010 geçti, ben HAFTA 2 dönmek işlevini istiyorum. Başka bir örnek, ben başlama tarihi olarak 6 Mart 2010 seti ve 5 Nisan 2010 baktı eğer o HAFTA 6. dönmelidir.

Ben zaman ve yardım için teşekkür ederiz.

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

UPDATE

Örneğin:

Başlangıç ​​tarihi: 3/6 - week1 Lookup date: 4/5

Week 2 starts from Mar 7-13. Week 3 (3/14-3/20). Week 4 (3/21-3/27). Week 5 (3/28-4/3). So 4/5 falls under Week 6.

Bir fikir YENİ * başlangıç ​​tarihi olarak başlangıç ​​tarihinden Pazar kullanmaktır. Peki yerine yukarı 3/6 arıyor, işlevi başlangıç ​​tarihi olarak 2/28 kullanacaktır.

5 Cevap

Siz, iki tarih arasındaki gün sayısını bulmak 7 bu sayıyı bölmek ve ceil sonucu alabilir:

$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.

Ne hakkında?

  1. Başlangıç ​​tarihi dönemin beri gün sayısını belirlemek
  2. Aynen, belirtilen tarih
  3. çıkarmak
  4. 7 ile bölmek

Ben size tarihleri ​​almak için gidiyoruz nasıl bilmiyorum, ben böyle bir şey yapardı:

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

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

return $result;

Eğer çok açık olmuyorsun beri bu ya aradığınızı olmayabilir:

// 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'));

Bunu anladım.

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