python - 在 Python 中指定没有日期的 datetime.date

标签 python datetime

有没有办法指定 datetime.date 而不是这样的一天:

datetime.date(year=1900, month=1, day=None)

我有一个没有完整指定日期的数据集(有时只有年份和月份在其中)。我想用 datetime.date 来代表它,而不用做任何技巧。

最佳答案

“美丽胜于丑陋。明确胜于含蓄...” - Python's Philosophy

你不能通过内置的 datetime.date 来做到这一点。 Python datetime.date 没有函数签名,因为它不会放置日期值。也许是因为date 没有day (of month) 在现实生活中自然是一个不完整的日期。

此外,由于 day 输入被视为 Integer 因此它必须具有值(value)。并且默认整数值 0 将导致日期表示错误(尽管用于计算 datetime 的内部机制可能会解决它),因为我们在现实生活中的 day 以 1 开头. 简而言之,datetime.date 做得很好(在使用安全方面)- 与其“显式优于隐式哲学”一致 - 不允许用户在没有调用的情况下调用它指定日期(即:通过暗示函数签名中需要什么,就像每个优秀的程序员都会做的那样)。

但是,您也可以在觉得烦人或没必要时创建自己的函数包装器。

编辑:

或者使用 Python 自己的包装器:

monthdate = functools.partial(datetime.date, day=1) #edit by ShadowRanger

对我来说,似乎最简单的做法是使用 current 内置函数并将 day 的值为 1。

datetime.date(1900, 1, 1)

很短的,1有待补充

关于python - 在 Python 中指定没有日期的 datetime.date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34646025/

相关文章:

python - 我应该对我的 python 函数/方法进行多少输入验证?

javascript - 如何将 performance.now() 输出转换为 UTC 字符串?

php - 如何将日期转换为其对应的字符串(例如 2015-06-03 到 2015 年 6 月 3 日)?

python - 如何随机删除 Pandas 数据框中的行,直到列中的值数量相等?

mysql - 将 MySQL 日期时间字段转换为字符串

c# - 获取上个月的日期

php - Yii2 model->created_date 是 future 的,不会在查询时返回

python - 服务器仅与一个客户端(Python Socket)建立连接

python - 在带有 Python 的 Tk 中,我如何指定一个框架或 Canvas 以随我的窗口调整大小?

python - 使用 Python 进行 Modbus TCP