Ответ, который я получил для вас, не является специфическим для PHP, скорее, это предложение того, как вы должны это сделать.
То, что вы хотите, не отличается от того, когда вы должны отслеживать месяцы финансового года - финансовый год может начинаться в любом календарном месяце. Способ сделать это - сохранить день как смещение, то есть номер дня.
Думая об этом ОО, у вас может быть объект данных, который представляет фактический календарный день (с понедельника по воскресенье) и может содержать реальную дату, поэтому он представляет фактический физический день. Затем вы расширяете этот класс (наследуете от него) и создаете класс, представляющий ваш виртуальный (или фискальный ) день, и добавляете целочисленное свойство, которое сохраняет его смещение в течение вашей виртуальной / фискальной недели.
Таким образом, ваш новый объект финансового дня все еще представляет абсолютную дату (например, среда 21 октября 2011 г.), но его смещение может быть нулевым, что означает, что это первый день в финансовой неделе. Это легко расширяется, так что объект финансового дня также может знать о своей позиции в течение финансовой недели и финансового месяца и т. Д.
Надеюсь, это имеет смысл для вас.