':param year:
The integer 0
:param month:
An integer from 1 to 12
:param day:
An integer from 1 to 31
:param hour:
An integer from 0 to 23
:param minute:
An integer from 0 to 59
:param second:
An integer from 0 to 59
:param microsecond:
An integer from 0 to 999999'

def __init__(self, year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None):

    if (year != 0):
        raise ValueError(u'year    must    be    0')
    if ((month < 1) or (month > 12)):
        raise ValueError(u'month    is    out    of    range')
    if ((day < 0) or (day > _DAYS_PER_MONTH_YEAR_0[month])):
        raise ValueError(u'day    is    out    of    range')
    if ((hour < 0) or (hour > 23)):
        raise ValueError(u'hour    is    out    of    range')
    if ((minute < 0) or (minute > 59)):
        raise ValueError(u'minute    is    out    of    range')
    if ((second < 0) or (second > 59)):
        raise ValueError(u'second    is    out    of    range')
    if ((microsecond < 0) or (microsecond > 999999)):
        raise ValueError(u'microsecond    is    out    of    range')
    self.year = year
    self.month = month
    self.day = day
    self.hour = hour
    self.minute = minute
    self.second = second
    self.microsecond = microsecond
    self.tzinfo = tzinfo
