获取PHPdate的周数(在一年中)

我想找一个date,并计算出周数是多less。

到目前为止,我到目前为止,它应该是42时返回。

<?php $ddate = "2012-10-18"; $duedt = explode("-",$ddate); $date = mktime(0, 0, 0, $duedt[2], $duedt[1],$duedt[0]); $week = (int)date('W', $date); echo "Weeknummer: ".$week; ?> 

这个数字是否被颠倒是错误的和巧合的? 还是我差不多?

今天,使用PHP的DateTime对象更好:

 <?php $ddate = "2012-10-18"; $date = new DateTime($ddate); $week = $date->format("W"); echo "Weeknummer: $week"; 

这是因为在mktime() ,它是这样的:

 mktime(hour, minute, second, month, day, year); 

因此,你的订单是错误的。

 <?php $ddate = "2012-10-18"; $duedt = explode("-", $ddate); $date = mktime(0, 0, 0, $duedt[1], $duedt[2], $duedt[0]); $week = (int)date('W', $date); echo "Weeknummer: " . $week; ?> 
 $date_string = "2012-10-18"; echo "Weeknummer: " . date("W", strtotime($date_string)); 

使用PHP的datefunction… http://php.net/manual/en/function.date.php

date(“W”,$ yourdate)

就像一个build议:

 <?php echo date("W", strtotime("2012-10-18")); ?> 

可能会比这一切都简单一点。

其他事情你可以做:

 <?php echo date("Weeknumber: W", strtotime("2012-10-18 01:00:00")); ?> <?php echo date("Weeknumber: W", strtotime($MY_DATE)); ?> 

这得到今天的date,然后说出一周的周数

 <?php $date=date("W"); echo $date." Week Number"; ?> 

你的代码将起作用,但你需要翻转第四和第五个参数。

我会这样做

 $date_string = "2012-10-18"; $date_int = strtotime($date_string); $date_date = date($date_int); $week_number = date('W', $date_date); echo "Weeknumber: {$week_number}."; 

另外,你的variables名称会在你看了一个星期的代码之后感到困惑,你应该考虑阅读http://net.tutsplus.com/tutorials/php/why-youre-a-bad-php-programmer/

 <?php $ddate = "2012-10-18"; $duedt = explode("-",$ddate); $date = mktime(0, 0, 0, $duedt[1], $duedt[2],$duedt[0]); $week = (int)date('W', $date); echo "Weeknummer: ".$week; ?> 

你有mktime params的错误 – 需要是月/日/年,而不是日/月/年

规则是一年中的第一周是包含当年第一个星期四的那一周。

我个人使用Zend_Date进行这种计算,并得到今天的一周是简单的。 如果使用date,他们还有许多其他有用的function。

 $now = Zend_Date::now(); $week = $now->get(Zend_Date::WEEK); // 10 

以PHP计算当周的N周前一周的一周

从本年的当前周开始获取周(N)

试试这个解决scheme

 date( 'W', strtotime( "2017-01-01 + 1 day" ) ); 
 function last_monday($date) { if (!is_numeric($date)) $date = strtotime($date); if (date('w', $date) == 1) return $date; else return date('Ym-d',strtotime('last monday',$date)); } $date = '2021-01-04'; //Enter custom date $year = date('Y',strtotime($date)); $date1 = new DateTime($date); $ldate = last_monday($year."-01-01"); $date2 = new DateTime($ldate); $diff = $date2->diff($date1)->format("%a"); $diff = $diff/7; $week = intval($diff) + 1; echo $week; //Returns 2.