【问题标题】:Django and Python handle changing date formatDjango 和 Python 处理更改日期格式
【发布时间】:2011-06-12 21:14:46
【问题描述】:

我正在将 CSV 文件中的记录导入 django 模型。 CSV 文件由用户上传。我面临的问题是日期字段。

日期字段希望日期为YYYY-MM-DD,但不同的电子表格程序默认使用不同类型的格式,我不希望用户必须更改其默认格式。

所以我想找到让 django 接受可能是各种格式的日期的最佳方法。

我认为可行的方法是指定允许的日期格式列表并尝试将字符串与其中之一匹配... 谢谢

【问题讨论】:

  • 无法检测到格式。例如,11/07/2011 在某些国家/地区表示 11 月 7 日,在其他国家/地区表示 7 月 11 日。您只能尝试一些“最佳猜测”。
  • 是的,我是这么想的,这就是为什么我要允许指定格式。所以我可以尝试将其与其中一种格式相匹配,并冒着出错的风险。我将更新问题以更具体
  • 好的,我希望已经更新了问题以便更好地解释。感谢您的帮助斯文

标签: python django date django-models


【解决方案1】:

我见过的“模糊”日期字符串解析的最佳选择是dateutil 库。

不幸的是,仍有可能出现模棱两可的情况,任何代码有时都会猜错。 Dateutil 的匹配逻辑有很好的记录,所以如果你遇到错误的猜测,你应该能够相对快速地弄清楚发生了什么。

【讨论】:

  • 谢谢!这就是我一直在寻找的,而且它还提供了许多其他功能,这些功能在未来会有用
【解决方案2】:

当您将日期字符串转换为datetime 对象时,您可能会将datetime.strptime 与格式参数一起使用。我会询问用户他们使用什么格式和/或将其存储在数据库中(我的意思是允许他们选择他们想要的格式)。

【讨论】:

  • 谢谢迈克,一个绝对是“万无一失”的选择,而我可能会选择这样做……尽管如果可能的话我想避免它
猜你喜欢
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多