我在我正在使用的函数中遇到了这个条件:
<?php
$thisweek = date('W');
if ($thisweek == 0) {
// ...
}
我没有写这个有条件的,当我去查找日期的范围('W')http://us3.php.net/manual/en/function.date.php时,它给出了一个例子,但没有像00-52或01-52这样的范围。
我的问题是日期('W')是否会在符合条件的情况下返回零?
答案 0 :(得分:1)
没有。它从01
开始,到52
结束。 See my test.:
echo date('W', strtotime('2013-01-01')) . PHP_EOL;
echo date('W', strtotime('2012-12-30')) . PHP_EOL;
<强>输出强>
01
52
仅don't assume 1月1日为01
周或12月31日为52
周:
echo date('W', strtotime('2012-12-31')) . PHP_EOL;
<强>输出强>
01
答案 1 :(得分:1)
PHP date('W')
函数永远不会 1 返回0。
在PHP的源代码中查找,ext / date / php_date.c。
在950-1000线附近稍微格式化:
timelib_sll isoweek, isoyear;
int weekYearSet = 0;
...
/* week */
case 'W':
if(!weekYearSet) {
timelib_isoweek_from_date(t->y, t->m, t->d, &isoweek, &isoyear);
weekYearSet = 1;
}
length = slprintf(buffer, 32, "%02d", (int) isoweek); break; /* iso weeknr */
什么是timelib_isoweek_from_date?那么......从第82行看ext / date / lib / dow.c中的逻辑,可以得出结论,周数从1到53不等:
/* Find if Y M D falls in YearNumber Y-1, WeekNumber 52 or 53 */
...
/* 8. Find if Y M D falls in YearNumber Y+1, WeekNumber 1 */
...
/* 9. Find if Y M D falls in YearNumber Y, WeekNumber 1 through 53 */
如果你不相信我,请自己查看代码:
1 )“从不”表示“只要PHP中没有错误”。