我目前需要从传递php周数的变量获得前一周,所以如果是第13周我会得到第12周。
我面临的问题是,如果我在第1周只是从原始数字减去1,它将返回第0周,除非我创建一个if语句,即:
if($week==1)
{
$prev_week=52;
$prev_year=$year-1;
}
这假设php从1开始计算周数而不是0.这看起来有点笨拙,我认为可能有更好的方法来利用PHP的许多日期和时间函数。
答案 0 :(得分:4)
试试这个:
$currentWeek = date( 'W' );
$today = strtotime( date( 'Y-m-d' ) ) - 7*24*60*60; // last week this day
// change 7 to 30 to see last year's week numer
$lastWeek = date( 'W', $today );
echo $currentWeek . '--' . $lastWeek;
希望这有帮助。
<强>更新强>
$lastWeekNumber = date( 'W', strtotime( 'last week' ) );
答案 1 :(得分:2)
$PreviousWeek=date("W",strtotime("-1 week"));
Get previous week number.
答案 2 :(得分:1)
我认为我可能会使问题复杂化 - 基本上我需要从选定的一周内的前几周出现的数据库中获得结果,因此如果一年中有54周的可能性我真的需要做的事情是: -
if($week==1)
{
$year_minsued=$year-1;
$week_minused=54;
}
else
{
$week_minused=$week-1;
$year_minused=$year;
}
我的选择语句可以是:
SELECT SUM(post_price), SUM(total_price) FROM
database_table
WHERE client_id='$account_no'
AND
(year<='$year_minused' AND week<='$week_minused')
我还没有对此进行测试,但认为它应该可以胜任。
答案 3 :(得分:1)
HamZa和网络游牧民族的答案帮助我更进一步确保,我得到了正确的一年。根据ISO-8601(欧洲使用的),使用date ('Y')
可能会导致意外行为,因为它可能发生,第1周属于下一年或前一年。而是使用date ('o')
。否则,您可能会从第52周跳到上一年的第1周(因为根据date ('Y')
,本周的开始是上一年。
$jahr = 2014; // jahr means year
$kw = 52; // kw contains week
使用date ('Y')
返回:
previousWeek: 51-2014
currentWeek: 52-2014
nextWeek: 01-2014
使用date ('o')
返回:
previousWeek: 51-2014
currentWeek: 52-2014
nextWeek: 01-2015
一起查看所有代码,e。 G。用于构建前向和后向链接:
$kwBack['kw'] = date ("W", strtotime ($jahr. 'W' . str_pad ($kw, 2, 0, STR_PAD_LEFT). ' -1 week'));
$kwBack['jahr'] = date ("o", strtotime ($jahr. 'W' . str_pad ($kw, 2, 0, STR_PAD_LEFT). ' -1 week'));
$kwNext['kw'] = date ("W", strtotime ($jahr. 'W' . str_pad ($kw, 2, 0, STR_PAD_LEFT). ' +1 week'));
$kwNext['jahr'] = date ("o", strtotime ($jahr. 'W' . str_pad ($kw, 2, 0, STR_PAD_LEFT). ' +1 week'));
echo "previousWeek: " . $kwBack['kw'] . "-" . $kwBack['jahr'];
echo "<br>currentWeek: " . $kw . "-" . $jahr;
echo "<br>nextWeek: " . $kwNext['kw'] . "-" . $kwNext['jahr'];
echo "<br>";
// Build the links
$urlBack = $_SERVER['PHP_SELF'] . "?" . http_build_query ($kwBack);
$urlNext = $_SERVER['PHP_SELF'] . "?" . http_build_query ($kwNext);
echo "Previous week: ". $urlBack . "<br>";
echo "Next week: ". $urlNext;
答案 4 :(得分:1)
我们知道一年可以介于 52 或 53 周之间。所以,我在这里创建了一个接收当前周和当前年份的函数。如果这是真的,很明显前一周将是前一年的最后一周,所以通过我给这个函数的变量年份,我减去 1 以获得值或前一年,我试着知道今年有多少周,在这种情况下,例如,将是第 1 周的前一周。否则,我在当前周的值中减去 1 以获得前一周的值。
我希望我有帮助
function PreviusWeekNumber($ActualWeek, $Year){
if($ActualWeek === 1){
$TransformYearIntolastYear = $Year -1;
$date = new DateTime;
$date->setISODate($TransformYearIntolastYear, 53);
$Result = ($date->format("W") === "53" ? 53 : 52);
}else{
$Result = $ActualWeek -1;
}
return $Result;
}
答案 5 :(得分:0)
检查
$year = 2013; // Retrieved from the DB
$week = 1;
$prev_week = date("W",strtotime($year. 'W'.str_pad($week, 2, 0, STR_PAD_LEFT). ' -1 week'));
echo $prev_week; // returns 52
显示年份的演示:
$year = 2013; // Retrieved from the DB
$week = 1;
$prev_week = date("W - Y",strtotime($year. 'W'.str_pad($week, 2, 0, STR_PAD_LEFT). ' -1 week'));
echo $prev_week; // returns 52 - 2012