是时候改变了:datetime.utcnow() 已被弃用

是时候改变了:datetime.utcnow() 已被弃用

💡 原文英文,约1300词,阅读约需5分钟。
📝

内容提要

Python 3.12版本中的datetime.datetime的utcnow()和utcfromtimestamp()函数被弃用,将在未来版本中删除。这些函数返回的是"naive" datetime对象,没有时区信息。Python维护者认为这会导致混淆,建议使用带时区的datetime对象。文章提供了替代方案,并解释了为什么需要这样的更改。尽管这些函数将在未来几年内被删除,但建议尽早更新代码。

🎯

关键要点

  • Python 3.12版本中,datetime.datetime的utcnow()和utcfromtimestamp()函数被弃用,将在未来版本中删除。
  • 这两个函数返回的是没有时区信息的'naive' datetime对象,可能导致混淆。
  • Python维护者建议使用带时区的datetime对象,以避免潜在的问题。
  • utcnow()和utcfromtimestamp()函数的名称可能会误导用户,应该更明确地表明它们处理的是naive时间。
  • 在Python 3.3中引入的timestamp()方法接受naive和aware datetime对象,但这被认为是一个错误。
  • 尽管被弃用,naive datetime对象在某些应用中仍然有用,特别是在已知单一时区的情况下。
  • 更新代码时,建议使用aware datetime对象,替代方案是使用datetime.now(datetime.UTC)和datetime.fromtimestamp(timestamp, timezone.utc)。
  • 提供了自定义函数以选择使用aware或naive实现,确保明确性。
➡️

继续阅读