PHPdate('W')
関数が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にバグがない限り」を意味します。