gpt4 book ai didi

python - 允许 python datetime 中的无效日期

转载 作者:太空狗 更新时间:2023-10-30 00:15:26 26 4
gpt4 key购买 nike

datetime 模块执行日期验证和数学运算,当您关心现实时这很好。

我需要一个对象来保存生成的日期,即使它们是无效的。日期时间太严格了,因为有时我只知道年份或只知道年份和月份,有时我有一个像 2011-02-30 这样的日期。

是否有类似 datetime 但可以处理无效日期的模块?

如果不是,处理这个问题的最佳方法是什么,同时尽可能少地复制功能并在可能执行时仍然允许日期数学运算?

更新

这样做的动机是与使用日期且不关心无效日期(mysql 和 perl)的多个系统集成,此外还希望能够判断基本的一般时间范围。对于模糊日期数学,从已知时间单位的开头开始(如果我知道年和月但不知道日,则使用第一个,如果我知道年但不知道月或日,则首先使用一月)。最后一点不是必需的,但会很好,我明白为什么它不常见,因为需要特殊情况日期数学的人可能会自己构建它。

我遇到的主要问题之一是使用 sqlalchemy 和 mysqldb 将日期从 mysql 加载到 python —— 如果你从 im mysql 中的日期列加载一个值,在 mysql 中看起来像“2011-01-00”,你得到 None在 python 。这一点都不酷。

最佳答案

如果日期时间模块过于严格,将其存储为字符串或用零填充未知值的元组。

编辑 如果您在从 mysql 转换为 python 时遇到问题,请自己编写一个适配器类以安全的方式进行转换(参见 Changing attribute behaviour)。

Edit2 一个简单的替代方法可能是编写一个简短的脚本来运行所有 SQL 日期并在那里进行更正,即将 2011-01-00 更改为 2011-01-01

Edit3 文档建议您可以 override reflected columns所以你可以将你的时间戳列视为字符串......或者在更高版本的 SQLAlchemy 中,你可以使用 the column_property用于覆盖。

关于python - 允许 python datetime 中的无效日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6697770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com