💡
原文英文,约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实现,确保明确性。
➡️