una data non puo' avere dei valori a 0. Il valore 0000 oppure 00 rappresenta una data nulla. Puoi farlo con una stringa.

In pratica ... una funzione che gestisce date puo' solo gestire valori compresi nel range di competenza. Per esempio con mktime puoi mettere il giorno o il mese a 0:

mktime(0,0,0 ,7, 0, 2009)

ma ti rendera' il 30 giugno cioe' il giorno prima del 1 luglio. Con l'anno a 0 ti rendera' il 2000 l'unico del suo range che puo' avere le ultime due cifre a 0.

Con una stringa con valori di data non validi non puoi utilizzare le funzioni temporali. Dovresti fare una (o piu') di tue funzioni ad hoc.