level change set to predefined date

Is there a plugin or is it possible to set up a multi-level subscription so each level that changes to the next level up (varying between either 1 week, 1 month or 1 year) relates to the DOB of the member.

DOB = 2 feb 1995

- 2 feb 1996 (1 year)
- 9 feb 1996 (1 week)
- 9 mar1996 (1 month)

ie: so each 1 year calculation of levels will always fall on 2 Feb.