python2.7格式化数据库返回日期字段

数据库不同表的日期字段格式多种多样,有的日期字段定义为date、datetime,有的定义varchar(16)返回unicode类型,有的是yyyyMMdd格式,有的是yyyy-MM-dd格式,要统一格式化为
yyyy-MM-dd格式 。
在Python 2.7中,str 和 unicode 是两种不同的字符串类型。 但在
 Python 3,那么 unicode 类型已经被移除,str 类型现在就是 Unicode 字符串,因此不需要对 unicode 进行特殊处理。在 Python 3 中,你可以直接使用 str 来检查所有字符串类型。 参考源代码如下:

def format_date(date_input):
    # 首先尝试最常见的预期格式
    if isinstance(date_input, unicode):  # Python 2.7特有的检查
        date_input = date_input.encode('utf-8')  # 转换unicode为str
    if isinstance(date_input, datetime):
        return date_input.strftime('%Y-%m-%d')
    elif isinstance(date_input, date):
        return date_input.strftime('%Y-%m-%d')
    elif isinstance(date_input, str):  # 在Python 2.7中使用basestring
        try:
            return datetime.strptime(date_input, '%Y-%m-%d').strftime('%Y-%m-%d')
        except ValueError:
            return datetime.strptime(date_input, '%Y%m%d').strftime('%Y-%m-%d')
        except ValueError:
            # 如果常见的格式不匹配,尝试去掉可能的前后空格再次匹配
            # 注意:这里没有提供额外的格式匹配,因为表结构明确了'%Y-%m-%d'
            # 如果确实需要处理其他格式,请在此处添加额外的尝试逻辑
            raise TypeError("Unsupported date type: %s with value %s" % (type(date_input), date_input))
    else:
        raise TypeError("Unsupported date type: %s with value %s" % (type(date_input), date_input))

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627

发表评论

邮箱地址不会被公开。 必填项已用*标注