<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def parse(self, text, noprefix=False):
 """Parse date and time from given date string. :param text: Any human readable string :type date_string: str|unicode :param noprefix: If set True than doesn't use prefix based date patterns filtering settings :type noprefix: bool :return: Returns :class:`datetime <datetime.datetime>` representing parsed date if successful, else returns None :rtype: :class:`datetime <datetime.datetime>`."""


        res = self.match(text, noprefix)
        if res:
            r = res['values']
            p = res['pattern']
            d = {'month': 0, 'day': 0, 'year': 0}
            if 'noyear' in p and p['noyear'] == True:
                d['year'] = datetime.datetime.now().year
            for k, v in list(r.items()):
                d[k] = int(v)
            dt = datetime.datetime(**d)
            return dt
        return None