我在我正在使用的函数中遇到了这个条件:
<?php
$thisweek = date('W');
if ($thisweek == 0) {
// ...
}
我没有写这个条件,当我去查找日期范围('W')http://us3.php.net/manual/en/function.date.php它给出了一个例子但没有范围如 00-52 或 01-52。
我的问题是 date('W') 是否会在满足此条件时返回零?
我在我正在使用的函数中遇到了这个条件:
<?php
$thisweek = date('W');
if ($thisweek == 0) {
// ...
}
我没有写这个条件,当我去查找日期范围('W')http://us3.php.net/manual/en/function.date.php它给出了一个例子但没有范围如 00-52 或 01-52。
我的问题是 date('W') 是否会在满足此条件时返回零?
PHPdate('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?嗯...查看 ext/date/lib/dow.c 中的逻辑,从第 82 行可以得出结论,周数从 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 中没有错误”。